Java JFrame:图像未显示

时间:2010-08-22 06:16:27

标签: java image awt jframe

我正在尝试构建一个显示图像的小框架。

我的问题是,在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);
     }

   }
}

2 个答案:

答案 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教程中的部分。如果你真的需要做自定义绘画,那么本教程还有一个关于自定义绘画的部分。