Probleme debutant java [Fermé]

Signaler
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019
-
Messages postés
16303
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 avril 2021
-
salut ! je suis débutant en programmation java et je voudrais dessiner un petit carré bleu. j'ai donc une class main et une class panel :

class main :
package test;

import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class test {

 public static void main(String[] args) {
  JFrame frame = new JFrame("test de titre"); 
  frame.setVisible(true);
  frame.setSize(800, 500);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setLocationRelativeTo(null);
  frame.getContentPane().setBackground( Color.red );
  JPanel panel = new JPanel();
  frame.add(panel);
  panel.setBackground(Color.red); // tout le fond est bien rouge
 }
}

class panel :
package test;

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

public class panel extends JPanel{
 public void paintComponent(Graphics g){
  g.setColor(Color.red);
  g.fillRect(0, 0, 100, 100);
 }
}

merci d'avance :}
Zeelox(TM) | Graphic Designer

2 réponses

Messages postés
16303
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 avril 2021
2 817
Bonjour,

Il ne te manque pas grand chose...
  • dans test, ligne 16, ce n'est pas un JPanel que tu dois créer mais un panel (la classe qui dessine le carré)
  • dans panel, ligne 9, tu dois mettre color.blue si tu veux un carré bleu...
  • dans panel, paintComponent surcharge JPanel donc il faut que tu appelles la méthode de la classe mère sinon tu vas perdre une partie du comportement.

public class panel extends JPanel {
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.blue);
        g.fillRect(0, 0, 100, 100);
    }
}
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019

j'ai tout corrigé y compris pour le blue mdr ( en vrai jmen fou un peu que ce soit bleu ou rouge ) mais j'ai une erreur :

j'ai mit sa ligne 16 :
Panel panel = new Panel();


et j'ai ceci :
Description Resource Path Location Type
Panel cannot be resolved to a type test.java /test/src/test line 16 Java Problem

du coup j'importe le truc mais ça ne marche toujours pas

merci a toi

Zeelox(TM) | Graphic Designer
Messages postés
16303
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 avril 2021
2 817
"j'aimerais savoir la difference entre panel et JPanel"
panel c'est le nom de la classe que tu as créé pour afficher un carré, mais elle pourrait s'appeler autrement.

JPanel est un conteneur standard Swing, dont ta classe hérite (même si elle pourrait juste hériter de Component, ça suffirait)

Panel est un conteneur standard AWT, dont JPanel hérite.

Pour ton problème la solution est dans ma réponse précédente il faut que tu utilises le constructeur de panel, la classe avec ton carré, mais Panel ne te sers à rien.
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019
>
Messages postés
16303
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 avril 2021

omgg je comprend rien :} je vais essaier de bidouiller et de trouver une solution ^^ merci a toi
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019
>
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019

ou au pire tu peux m'envoyer la correction et je regarde ce qui était pas bon ça serait vraiment cool =D
Messages postés
16303
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 avril 2021
2 817
C'est juste un problème de minuscule/majuscule qui fait que tu utilises la classe Panel de Java (P majuscule) au lieu d'utiliser ta classe panel (p minuscule)

Ligne 16 il faut mettre :
panel panel = new panel();
Messages postés
16303
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 avril 2021
2 817
Pour comprendre l'ambiguïté il faut regarder les hiérarchies des classes Java.

java.lang.Object
    java.awt.Component
        java.awt.Container
            javax.swing.JComponent
                javax.swing.JPanel
                    test.panel

java.lang.Object
    java.awt.Component
        java.awt.Container
            java.awt.Panel

La méthode frame.add(panel); prends en paramètre un java.awt.Component donc que tu mettes un test.panel ou un java.awt.Panel les deux sont acceptés, mais bien sûr il n'y en a qu'un qui dessines un carré bleu...