Probleme debutant java

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

  1. Modérateur
    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);
        }
    }
    1. 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
      1. Modérateur
        C'est parce que tu as nommé ta classe
        panel
        avec un p minuscule.

        Donc au choix :
        • tu renommes
          class panel
          en
          class Panel
          .
        • tu modifies le constructeur
          new Panel()
          en
          new panel()
          .
      2. @KXj'essaie ça de suite merci beaucoup :)
      3. @zeeloxça ne fonctionne toujours pas, aucun carré.
        mon code :
        package test;
        
        import java.awt.Color;
        import java.awt.Panel;
        
        import javax.swing.JFrame;
        
        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 );
        		Panel panel = new Panel();
        		frame.setContentPane(panel);
        		panel.setBackground(Color.red); // tout le fond est bien rouge
        	}
        }
        
      4. @zeeloxet l'autre class si besoin
        package test;
        
        import java.awt.Color;
        import java.awt.Graphics;
        import javax.swing.JPanel;
        
        public class panel extends JPanel{
        	public void paintComponent(Graphics g) {
                super.paintComponent(g);
        		g.setColor(Color.blue);
        		g.fillRect(0, 0, 100, 100);
        	}
        }
      5. @zeeloxet j'aimerais savoir la difference entre panel et JPanel histoire d'être éclairé sur mon erreur. merci :)