2010-08-22 117 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教程的部分。如果你真的需要做自定義繪畫,那麼教程也有一個關於自定義繪畫的部分。