0

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

}
4

2 回答 2

4

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

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

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

此外,请参阅如何制作小程序以了解创建小程序的正确方法。它展示了如何使用 EDT 以及加载图像的更好方法。

于 2013-06-06T15:33:18.153 回答
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);
}
}
于 2013-06-08T13:05:17.993 回答