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