2010-08-22 16 views
1

Je tente de créer un petit cadre qui affiche une image.Java JFrame: Image non affichée

Mon problème est que dans la méthode paint(Graphics g), le g.drawImage est exécuté, mais rien n'est affiché sur mon RLFrame.

Une idée/un conseil?

Merci d'avance.

est ici le code

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); 
    } 

    } 
} 

Répondre

1

Utilisation paintComponent(Graphics g) au lieu de paint(Graphics g) dans votre code. Quelque chose comme

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); 
} 


Ajouter l'image à un JPanel, puis ajoutez cette instance JPanel à votre RLFrame.

+0

toujours rien. Ce n'est même pas exécuté :( – Tom

+0

On y va: D Merci. – Tom

1

Vous ne devez jamais remplacer la méthode paint() d'un JFrame.

Vous n'avez pas besoin de faire de la peinture personnalisée. Créez simplement un ImageIcon et ajoutez-le à un JLabel, puis ajoutez l'étiquette au cadre.

Consultez la section du tutoriel Swing sur How to Use Icons. Si vous avez vraiment besoin de faire de la peinture personnalisée alors le tutoriel a aussi une section sur la peinture personnalisée.