2010-08-22 89 views
1

我试图建立一个小框架,显示图像。Java 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); 
    } 

    } 
} 

回答

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。

+0

仍然没有。它甚至没有执行:( – Tom 2010-08-22 06:24:25

+0

有我们去:D谢谢。 – Tom 2010-08-22 06:59:22

1

您不应该重写JFrame的paint()方法。

你没有必要做自定义绘画。只需创建一个ImageIcon并将其添加到JLabel,然后将标签添加到框架。

查看How to Use Icons上Swing教程的部分。如果你真的需要做自定义绘画,那么教程也有一个关于自定义绘画的部分。