Quando ho appreso la creazione di Java GUI: s nel mio primo corso di Java, mi è stato insegnato per creare le mie finestre come JFrame
casi, e quindi aggiungere un JPanel
ad ogni JFrame
e, infine, aggiungere tutti i componenti GUI al JPanel
:Devo aggiungere componenti a un JFrame o al suo contentPane?
class Example extends JFrame {
Example() {
JPanel panel = new JPanel();
this.add(panel);
// Create components here and add them to panel
// Perhaps also change the layoutmanager of panel
this.pack();
this.setVisibility(true);
}
public static void main(String[] args) {
new Example();
}
}
Ho sempre pensato che "beh, questo odora un po ', non mi piace creare un oggetto extra solo per essere un contenitore", ma non sapevo nessun altro modo per farlo, quindi ho continuato. Fino a poco tempo fa, quando mi sono imbattuto su questo "modello":
class AnotherExample extends JFrame {
AnotherExample() {
Container pane = this.getContentPane();
// Add components to and change layout of pane instead
this.pack();
this.setVisibility(true);
}
public static void main(String[] args) {
new AnotherExample();
}
}
ancora in fase del tutto nuova a Java, mi sento meglio con il secondo approccio solo perché non comporta la creazione di un JPanel
solo per avvolgere gli altri componenti. Ma quali sono le reali differenze tra gli approcci, ad eccezione di quello? Qualcuno di loro ha grandi benefici rispetto all'altro?
Leggi questo tutorial per maggiori informazioni: http://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html –
Grande tutorial! Consiglio a chiunque trovi questa domanda di leggerlo. –
non importa (entrambi sono cattivi, non c'è bisogno di farlo, basta aggiungere al frame) - il vero odore è _extends JFrame_: buon vecchio OO regola è di estendere solo se c'è un suono è-una relazione (vs. semplice utilizzo, come nel caso del 99,99% in tutte le applicazioni GUI) – kleopatra