Mon programme compte 3 classes. 1) principal, 2) cadre, 3) dessinBoard. La logique de mon programme est que, un nouveau dessin sera affiché à chaque fois que l'utilisateur clique sur Nouveau bouton (et cela fonctionne bien).Placer un dessin sur JPanel
1ère classe - principale méthode
public class mainPage {
public static void main(String[]args){
JFrame appFrame = new Frame();
appFrame.setVisible(true);
appFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*/
}
}
2e classe - décrire la mise en page (j'utiliser la mise en page Sac Grille)
public class Frame extends JFrame implements ActionListener {
public Frame(){
GridBagLayout m = new GridBagLayout();
Container c = (Container)getContentPane();
c.setLayout (m);
GridBagConstraints con;
JButton bPattern = new JButton("New Pattern");
....
bPattern.addActionListener(this);
JPanel pDraw = new JPanel();
.....
pDraw.add(new drawingBoard()); //drawing will be placed in this panel
}
public void actionPerformed(ActionEvent e) {
repaint();
}
}
3e classe - les fonctions de dessin par exemple l'exécution paintComponent(), etc.
public class drawingBoard extends JPanel {
public drawingBoard(){}
public void paintComponent(Graphic g){}
....
}
Le problème est que, quand je regarde sur la console, il semble que même si l'utilisateur n'a pas cliqué sur le bouton, le programme appelle la classe « DrawingBoard » et repeindre. Le composant de peinture est dans la 3ème classe (drawingBoard). Bien que cela ne semble pas poser de problème (par exemple, aucun dessin affiché sur le panneau à moins que l'utilisateur ne clique sur le bouton), je suis juste curieux de savoir comment cela est arrivé. est-ce parce que j'ai écrit ce code à FRAME class(). Mon intention d'écrire ce code est de m'assurer que le dessin devrait être placé dans ce panneau spécifique (j'ai 3 panneaux) mais de ne pas appeler la 3ème classe à moins que le bouton ait été cliqué.
JPanel pDraw = new JPanel();
pDraw.add(new drawingBoard()); //place drawing here