Unterschied zwischen JFrame.repaint () und JPanel.repaint ()

8

kann bitte irgendjemand erklären den Unterschied zwischen JPanel.repaint() Methode und JFrame.repaint() Methode, ich denke, beide ruft die Methode paintComponent() in JPanel.

Bitte klären, danke

    
Ankit 29.07.2012, 10:58
quelle

3 Antworten

18

Der Aufruf von repaint() für eine beliebige Komponente fügt dem Repaint-Manager eine Anforderung zum Zeichnen dieser Komponente hinzu. Wenn die Bedingungen korrekt sind, veranlasst der Manager, dass die Methode paint(...) der Komponente aufgerufen wird. Da die paint-Methode einer Komponente dann paintComponent(...) , paintBorder(...) und paintChildren(...) aufruft, wird die Komponente selbst bemalt, ihr Rahmen und ihre Kaskade werden rekursiv für alle ihre untergeordneten Elemente, ihre untergeordneten Elemente, ihre untergeordneten Elemente usw. angezeigt auf JFrame bewirkt, dass diese Kaskade im gesamten Fenster der obersten Ebene auftritt, während das Aufrufen einer Unterkomponente dazu führt, dass nur diese Komponente und ihre untergeordneten Elemente neu gezeichnet werden.

Beachten Sie, dass das Aufrufen von repaint() nicht garantiert, dass der Repaint-Manager die Komponente zeichnet, insbesondere wenn gestapelte Anforderungen vorhanden sind. Für mehr Details lesen Sie bitte Malen in AWT und Swing .

    
Hovercraft Full Of Eels 29.07.2012, 11:06
quelle
9

1. Wenn die Methode repaint() aufgerufen wird, benachrichtigt der Event-Handler-Thread alle Komponenten, und dann ruft jede Komponente ihre paintComponent() -Methode auf.

2. Der Aufruf von JPanel.repaint() hat die gesamte Komponente innerhalb des JPanels zu repaint() , und der Aufruf von JFrame.repaint() wird die gesamte Komponente enthalten der JFrame zu repaint() .

3. Rufen Sie JFrame.repaint () auf, um das JPanel auch ohne JPanel.repaint () neu zu streichen.

    
Kumar Vivek Mitra 29.07.2012 11:02
quelle
2

Kurz gesagt,

  • JPanel.repaint() wird sich selbst und seine Kinder neu streichen.
  • JFrame.repaint() wird sich selbst und seine Kinder neu streichen. Aber da JFrame die Basis ist, wird dies jede Komponente innerhalb neu zeichnen.

Überprüfen Sie die Antwort "@Hovercraft Full Of Aels" auf Details.

    
BaSsGaz 11.08.2017 18:00
quelle

Tags und Links