JAppel中的JLabel和Image - 图像未显示

时间:2013-06-06 15:29:16

标签: java image swing jlabel japplet

输出标签显示,但图像不显示。当我删除整个标签部分时它会这样做。我不知道是否还必须使用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);
}

}

2 个答案:

答案 0 :(得分:4)

不要覆盖JApplet的paint()方法。

自定义绘画是通过覆盖JPanel的paintComponent()方法完成的。不要忘记也调用super.paintComponent()。然后将面板添加到applet。

最后,您可以将标签添加到面板中。

另外,请参阅How to Make Applets了解创建applet的正确方法。它显示了如何使用EDT以及更好的方式来加载图像。

答案 1 :(得分:0)

现在我有类似的东西,我在下面发布的内容。有用。感谢。

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);
}
}