Problème affichage panel

Résolu
Ayk0 Messages postés 9 Date d'inscription lundi 29 janvier 2018 Statut Membre Dernière intervention 14 mars 2022 - Modifié le 29 janv. 2018 à 23:54
Ayk0 Messages postés 9 Date d'inscription lundi 29 janvier 2018 Statut Membre Dernière intervention 14 mars 2022 - 31 janv. 2018 à 16:27
Bonjour,je commence a programmer en java.
Je rencontre un problème d'affichage du panel.
Merci de m'aider =) ps = je suis débutant

voici Main->
import java.awt.Panel;

import javax.swing.JFrame;

public class Main {

 public static void main(String[] args) {
 
   JFrame frame = new JFrame();
   Panel panel = new Panel();
    frame.setVisible(true);
    frame.setSize(800, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    frame.setContentPane(panel);
    panel.setVisible(true);
 }

Voici la classe panel ->
import java.awt.Graphics;

import javax.swing.JPanel;

public class Panel extends JPanel {
 
 public  void paintcomponent(Graphics g) {
  
  g.fillRect(1, 1, 111, 111);
  
 }

}

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
30 janv. 2018 à 00:06
Bonjour,

1) Dans main tu as importé java.awt.Panel donc c'est cette classe Panel (qui n'affiches rien) que tu utilises, pas celle que tu as écrites. Donc il faudrait supprimer l'import et idéalement éviter d'appeler ta classe personnelle de la même manière qu'une classe Java existante (et aussi utilisée que Panel...)

import javax.swing.JFrame;

public class Main {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        MyPanel panel = new MyPanel();
        frame.setVisible(true);
        frame.setSize(800, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setContentPane(panel);
        panel.setVisible(true);
    }
}


2) Dans Panel ta méthode s'appelle paintcomponent (avec un C minuscule), mais pour qu'elle puisse être affichée, elle doit surcharger la méthode de JPanel avec exactement le même nom, c'est à dire paintComponent (avec un C majuscule). Astuce : quand tu veux faire une surcharge ajoutes l'annotation @Override, ça vérifiera que la méthode est bien celle que tu pensais surcharger.

import java.awt.Graphics;
import javax.swing.JPanel;

public class MyPanel extends JPanel {

    @Override
    public void paintComponent(Graphics g) {
        g.fillRect(1, 1, 111, 111);
    }
}
0
Ayk0 Messages postés 9 Date d'inscription lundi 29 janvier 2018 Statut Membre Dernière intervention 14 mars 2022
31 janv. 2018 à 16:27
merci beaucoup =))
0
Rejoignez-nous