2010-08-22 2 views
1

Im пытается создать небольшой кадр, который отображает изображение.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

+0

Там мы идем: D Спасибо. – Tom

1

Вы никогда не должны преодолевать метод paint() JFrame.

Вам не нужно делать обычную роспись. Просто создайте ImageIcon и добавьте его в JLabel, а затем добавьте метку в фрейм.

Ознакомьтесь с разделом из учебника Swing по телефону How to Use Icons. Если вам действительно нужно сделать обычную роспись, то в учебнике также есть раздел о пользовательской картине.