Que passer comme argument ???
Fermé
site12
Messages postés
288
Date d'inscription
Statut
Membre
Dernière intervention
-
site12 Messages postés 288 Date d'inscription Statut Membre Dernière intervention -
site12 Messages postés 288 Date d'inscription Statut Membre Dernière intervention -
bonjour
Dans ma classe principale main j'ai:
et dans ma classe fenetre j'ai:
Donc voilà, je met quoi à la place de "???" , à l'intérieur des parenthèses ?
merci par avance
Dans ma classe principale main j'ai:
fenetre Fenetre = new fenetre();
Fenetre.dessiner(???)
et dans ma classe fenetre j'ai:
import java.awt.Graphics;
public void dessiner(Graphics g)(){
//dessin d'un cercle
}
Donc voilà, je met quoi à la place de "???" , à l'intérieur des parenthèses ?
merci par avance
A voir également:
- Que passer comme argument ???
- Passer de qwerty a azerty - Guide
- Passer a windows 10 - Accueil - Mise à jour
- Passer de majuscule à minuscule - Guide
- Passer à windows 11 gratuitement - Guide
- Se connecter à hotmail sans passer par outlook - Forum Hotmail / Outlook.com
2 réponses
Bonjour,
Normalement tu dois récupérer l'objet Graphics depuis des méthodes de bas niveau comme Component.paint(Graphics g) que tu surcharges comme ça :
Exemple :
Normalement tu dois récupérer l'objet Graphics depuis des méthodes de bas niveau comme Component.paint(Graphics g) que tu surcharges comme ça :
@Override public void paint(Graphics g) { super.paint(g); // ne pas oublier ! dessiner(g); }
Exemple :
import java.awt.Graphics; import javax.swing.JFrame; public class Test { public static void main(String[] args) { JFrame frame = new JFrame() { @Override public void paint(Graphics g) { super.paint(g); g.drawRect(50, 50, 50, 50); } }; frame.setSize(150, 150); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }La confiance n'exclut pas le contrôle
Je comprends toujours pas, alors je récapitule
Je veux appeller la méthode PaintComponent depuis la classe main, comment je fais ?????
voici mes 2 classes:
Je veux appeller la méthode PaintComponent depuis la classe main, comment je fais ?????
voici mes 2 classes:
public class main {
public static void main(String[] args) {
// TODO Auto-generated method stub
fenetre Display = new fenetre();
Display.afficher();
//C'EST ICI QUE JE VEUX APPELLER LA METHODE PAINTCOMPONENT DE
//LA CLASSE FENETRE, COMMENT JE FAIS ???
}
}
import javax.swing.JFrame;
import java.awt.Graphics;
import java.awt.Color;
public class fenetre {
JFrame fenetre = new JFrame();
public void afficher(){
fenetre.setTitle("Ma fenetre Java");
fenetre.setSize(800,600);
fenetre.getContentPane().setBackground(Color.darkGray);
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setVisible(true);
}
public void paintComponent(Graphics g){
g.drawRect(10, 10, 15, 50);
}
}
N'utilises pas la méthode paintComponent(Graphics) mais plutôt paint(Graphics)
Si tu appelles la méthode repaint(), elle va appeler la méthode paint en lui passant le paramètre Graphics qui convient.
Remarque : les conventions de nommages, c'est majuscules pour les classes, minuscules pour les méthodes et les variables, pas l'inverse.
Remarque : Mélanger le français et l'anglais "display.afficher()" ça fait bizarre...
Si tu appelles la méthode repaint(), elle va appeler la méthode paint en lui passant le paramètre Graphics qui convient.
Remarque : les conventions de nommages, c'est majuscules pour les classes, minuscules pour les méthodes et les variables, pas l'inverse.
public class Main { public static void main(String[] args) { Fenetre display = new Fenetre(); display.afficher(); display.repaint(); // appelles paint(Graphics) } }
Remarque : Mélanger le français et l'anglais "display.afficher()" ça fait bizarre...
Ça ne dessine rien car il n'y a rien à dessiner.
Ton objet Fenetre display n'est jamais utilisé. Il crée la JFrame fenetre, qui elle est affichée, mais qui ne contient pas le JPanel dont la méthode paint est définie.
Il faudrait au minimum que tu ajoutes le JPanel à la JFrame.
Remarque : il te manque aussi le super.paint(g) dans la méthode paint(Graphics)
Mais ton code est très confus, ce n'est pas au JPanel de créer la JFrame, mais l'inverse, sans parler de l'ambiguïté entre le type fenetre et l'objet fenetre...
Voici une correction de ton code :
Remarque : noir sur gris foncé ça ne se voit pas très bien, mais le rectangle est bien dessiné.
Ton objet Fenetre display n'est jamais utilisé. Il crée la JFrame fenetre, qui elle est affichée, mais qui ne contient pas le JPanel dont la méthode paint est définie.
Il faudrait au minimum que tu ajoutes le JPanel à la JFrame.
Remarque : il te manque aussi le super.paint(g) dans la méthode paint(Graphics)
public class fenetre extends JPanel { // panel de type fenetre JFrame fenetre = new JFrame(); // variable fenetre de type JFrame public void afficher() { fenetre.add(this); // ajout du JPanel de type fenetre dans la JFrame fenetre
Mais ton code est très confus, ce n'est pas au JPanel de créer la JFrame, mais l'inverse, sans parler de l'ambiguïté entre le type fenetre et l'objet fenetre...
Voici une correction de ton code :
import java.awt.Color; import java.awt.Graphics; import javax.swing.JFrame; public class Fenetre extends JFrame { private static final long serialVersionUID = 1L; public Fenetre() { setTitle("Ma fenetre Java"); setSize(800, 600); getContentPane().setBackground(Color.DARK_GRAY); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } @Override public void paint(Graphics g) { super.paint(g); // ne pas oublier ! g.drawRect(10, 10, 15, 50); } }
public class Main { public static void main(String[] args) { Fenetre fenetre = new Fenetre(); fenetre.setVisible(true); } }
Remarque : noir sur gris foncé ça ne se voit pas très bien, mais le rectangle est bien dessiné.
Ce que tu me dit de mettre, dans MON cas, ça se met dans la classe principale main ou dans la classe fenetre ?
Dans tous les cas, l'objet Graphics qu'il faut passer comme argument doit venir de la méthode paint(Graphics).
Exemple :