Salut,
Tâchons de faire au plus simple :
Si on enlève les //, c'est-à-dire en remplaçant le Content Pane par un nouveau Container, on voit qu'à chaque redimensionnement par glissement des bordures, paintComponent est appelé deux fois (trois fois pour un rétrécissement par le coin inférieur droit). Si on les remet, donc en utilisant le Content Pane d'origine, paintComponent est appelé une fois de moins. Pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 import javax.swing.*; import java.awt.*; public class Panneau extends JPanel { int compteur=0; public void paintComponent(Graphics g) { super.paintComponent(g); System.out.println("Couche No "+compteur++); } public static void main(String[] args) { JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container conteneur; conteneur=f.getContentPane(); // conteneur=new Container(); conteneur.setLayout(new BorderLayout()); Panneau panneau=new Panneau(); panneau.setPreferredSize(new Dimension(300,200)); panneau.setBackground(Color.white); conteneur.add(panneau); // f.setContentPane(conteneur); f.pack(); f.setVisible(true); } }
En outre, si l'on fait glisser une fenêtre tierce par dessus, les appels sont très nombreux. Le double buffering par défaut ne devrait-il pas éviter cela?
Partager