jlabel和image-image不显示

slmsl1lt  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(306)

在输出标签上显示,但图像不显示。当我移除整个标签部分时,它就会发生。我不知道我是否也要使用clearrect方法。

public class Applet1 extends JApplet{

Image img;
JLabel label;

public void init(){

    img = getImage(getDocumentBase(), getParameter("imagePath"));

    label = new JLabel(getParameter("labelText"));
    label.setFont(new Font(getParameter("labelFont"), Font.PLAIN, Integer.parseInt(getParameter("labelSize"))));

    add(label);
    setVisible(true);
}

public void paint(Graphics g){
    g.clearRect(0, 0, 300, 200);
    g.drawImage(img, 0, 0, 300, 200, this);
}

}
eimct9ow

eimct9ow1#

现在我有了这样的东西,我在下面贴的东西。它起作用了。谢谢。

public class Applet1 extends JApplet{

JLabel label;
CustomPanel panel;

public void init(){

    panel = new CustomPanel(getImage(getDocumentBase(), getParameter("imagePath")));

    // ustawianie etykiety
    label = new JLabel(getParameter("labelText"));
    label.setFont(new Font(getParameter("labelFont"), Font.PLAIN, Integer.parseInt(getParameter("labelSize"))));

    panel.add(label);
    panel.setVisible(true);

    add(panel);
    setVisible(true);
} 
}

class CustomPanel extends JPanel{

Image img;

public CustomPanel(Image img){
    this.setLayout(new GridLayout(1,2));
    this.img = img;
}

public void paintComponent(Graphics g){
    super.paintComponents(g);
    g.clearRect(0, 0, 300, 200);
    g.drawImage(img, 0, 0, 300, 200, this);
}
}
xggvc2p6

xggvc2p62#

不要重写japplet的paint()方法。
自定义绘制是通过覆盖 paintComponent() jpanel的方法。别忘了调用super.paintcomponent()。然后将面板添加到小程序中。
最后,将标签添加到面板。
另外,有关创建小程序的正确方法,请参见如何制作小程序。它展示了如何使用edt和一个更好的方式来加载图像。

相关问题