momop78
-
1 déc. 2013 à 00:32
KX
Messages postés16754Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention25 novembre 2024
-
1 déc. 2013 à 17:34
Bonjour,
Je souhaite faire une fenêtre qui permette d'afficher une ligne, un cercle ou un rectangle en fonction d'un bouton cliqué, en plus de cela, un texte affichant qu'elle forme est dessiné apparait en bas de ma fenêtre. Ce doit être tout bête mais je n'arrive pas à afficher la forme, alors que le reste s'affiche convenablement. Pourriez vous me dire où j'ai faux ?
Voici mon code :
public class EssaiMain {
public static void main(String[] args) {
JFrame fenetre = new JFrame ();
FormesGeometriques fenetre2 = new FormesGeometriques();
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setTitle("Cabinet Medical PIC'OUZ");
fenetre.setSize(700, 500);
fenetre.setVisible(true);
fenetre.add(fenetre2);
}
}
public class FormesGeometriques extends JPanel{
private static final long serialVersionUID = 1L;
public static String typeForme = "ligne";
private JButton jbLigne = new JButton ("Ligne");
private JButton jbCercle = new JButton ("Cercle");
private JButton jbRectangle = new JButton ("Rectangle");
private JPanel monPanel = new JPanel (new FlowLayout());
private JLabel jbForme = new JLabel ("Ligne");
private JPanel dessinPanel = new JPanel (new FlowLayout());
C'est bon j'ai réussi en ajoutant une classe DessinPanel et en y mettant ma méthode paintComponent, cependant ça me semble un peu étrange comme façon de faire, n'y aurait-il pas moyen de lier directement mon attribut dessinPanel à la méthode paintComponent dans la classe FormesGeometriques ?
KX
Messages postés16754Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention25 novembre 20243 020 1 déc. 2013 à 17:34
Ce n'est pas vraiment étrange comme façon de faire, un Panel est un conteneur, tu lui ajoutes donc des composants (les trois boutons) qui sont eux la partie visible. Si tu utilises le Panel également pour faire ton paintComponent tu perds alors la notion de conteneur/contenu.
Il est donc plutôt logique de rajouter un autre composant (ton DessinPanel) qui s'occupe de l'affichage de tes figures, comme ça FormesGeometriques reste exclusivement un conteneur.
Ce qu'il faudrait faire pour que ça fonctionne directement ce n'est pas redéfinir la méthode paintComponent (qui est la méthode des conteneurs), mais redéfinir la méthode paint (qui est la méthode des composants).
1 déc. 2013 à 17:34
Il est donc plutôt logique de rajouter un autre composant (ton DessinPanel) qui s'occupe de l'affichage de tes figures, comme ça FormesGeometriques reste exclusivement un conteneur.
Ce qu'il faudrait faire pour que ça fonctionne directement ce n'est pas redéfinir la méthode paintComponent (qui est la méthode des conteneurs), mais redéfinir la méthode paint (qui est la méthode des composants).
Il manquera plus qu'un petit truc : mettre un à la fin de ton actionPerformed, sinon ça ne prendra pas en compte la modification.
Remarque : je pense que ton objet typeForme ne devrait pas être static.