Problème affichage panel [Résolu]

Ayk0 8 Messages postés lundi 29 janvier 2018Date d'inscription 23 mai 2018 Dernière intervention - 29 janv. 2018 à 19:12 - Dernière réponse : Ayk0 8 Messages postés lundi 29 janvier 2018Date d'inscription 23 mai 2018 Dernière intervention
- 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);
  
 }

}
Afficher la suite 

Votre réponse

2 réponses

KX 15737 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 24 septembre 2018 Dernière intervention - 30 janv. 2018 à 00:06
0
Merci
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);
    }
}
Ayk0 8 Messages postés lundi 29 janvier 2018Date d'inscription 23 mai 2018 Dernière intervention - 31 janv. 2018 à 16:27
merci beaucoup =))
Commenter la réponse de KX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.