我正在尝试构建一个显示图像的小框架。
我的问题是,在paint(Graphics g)
方法中,g.drawImage
已执行,但我的RLFrame上没有显示任何内容。
有任何想法/提示吗?
提前致谢。
这是代码
public class RLFrame extends JFrame{
Image img;
public RLFrame(String title){
super("testing");
}
public void run(){
MediaTracker mt = new MediaTracker(this);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 400);
this.img = Toolkit.getDefaultToolkit().getImage("maps/23bis.ppm");
mt.addImage(this.img, 1, 100, 100);
this.setVisible(true);
}
public void paint(Graphics g){
System.out.println("Paint");
if(img != null){
System.out.println("draw");
g.drawImage(img, 300, 300, this);
}
else
{
g.clearRect(0, 0, getSize().width, getSize().height);
}
}
}
答案 0 :(得分:1)
在代码中使用paintComponent(Graphics g)
代替paint(Graphics g)
。像
protected void paintComponent(Graphics g) {
super.paintComponent(g);
System.out.println("Paint");
if (img != null) {
System.out.println("draw");
g.drawImage(img, 300, 300, this);
}
else
g.clearRect(0, 0, getSize().width, getSize().height);
}
将图像添加到JPanel,然后将该JPanel实例添加到RLFrame。
答案 1 :(得分:1)
你永远不应该覆盖JFrame的paint()方法。
您无需进行自定义绘画。只需创建一个ImageIcon并将其添加到JLabel,然后将标签添加到框架中。
查看How to Use Icons上Swing教程中的部分。如果你真的需要做自定义绘画,那么本教程还有一个关于自定义绘画的部分。