Warum benötigt JFrame ursprünglich getContentPane () zum Hinzufügen von Komponenten?

8

Ich weiß, ab Java 1.5 , Man kann eine Komponente wie folgt zu einem JFrame hinzufügen:

  

myFrame.add (myButton);

anstelle von:

  

myFrame.getContentPane (). add (myButton);

Warum war das nicht immer so?

    
Ellen Spertus 07.02.2012, 01:32
quelle

2 Antworten

9

Wie in der JFrame-API beschrieben, tun dies beide Das gleiche: füge eine Komponente zum contentPane hinzu. Es ist erst vor kurzem (Java 1.5 vielleicht?) Swing hinzugefügt die syntaktische Zucker / Convenience-Methode, damit Sie diesen Aufruf direkt auf dem JFrame (oder einem anderen Swing Top-Level-Container), aber Sie sind immer noch zu den ContentPane hinzuzufügen. Gleiches für remove(...) und setLayout(...) Das wird nur allzu deutlich, wenn Sie versuchen, die Hintergrundfarbe des JFrame über myJFrame.setBackground(Color.green); zu setzen und nichts passiert. Aus diesem Grund bin ich nicht allzu glücklich mit dieser Veränderung. Das und auch, weil ich ein alter Groll sein muss.

    
Hovercraft Full Of Eels 07.02.2012, 01:37
quelle
7
  

4753342: Die Top-Level-Komponente von Swing sollte das Hinzufügen / Entfernen umleiten   Methoden zu ContentPane

Beschreibung:

     

Im Gegensatz zur AWT Programmierung,    JFrame / JDialg / JWindow / JApplet / JInternalFrame erlauben Ihnen nicht hinzuzufügen    Component s, stattdessen müssen Sie über JRootPane lernen und hinzufügen   Kinder Component s dazu. Dies fügt unnötige Verwirrung zu neuen hinzu   Entwickler.

     

Vor 5.0 versucht, ein Component aus einem von% hinzuzufügen oder zu entfernen   Diese Top-Ebene Component s würde dazu führen, dass eine Ausnahme ausgelöst wird. Im   5.0, es wird keine Ausnahme ausgelöst, stattdessen wird Component dem Inhaltsteil hinzugefügt oder entfernt. Dies führte zu mehreren Überarbeitungen   zum Javadoc von JFrame , JDialog , JWindow , JApplet und   %Code%. Dies wurde in RootPaneContainer's zusammengefasst   Javadoc:

%Vor%

Auch hier ist ein verwandter Bug:

mre 07.02.2012 01:55
quelle

Tags und Links