Frame java

di il
1 risposte

Frame java

Premetto che è un esercizio dove creo un frame con bottone casella di testo e label settando tutti i vari parametri usando la classe denominata Example estendendola a JFrame.
Poi creo un altra classe denominata ExampleEvent e implemento ActionListener per scrivere altro codice in cui andro a programmare l'evento vero e proprio che corrisponde al premere un bottone.
Salve programmo da poco stavo facendo un esercizio java sui frame ed eventi, volevo sapere la differenza ammesso che ci sia tra i due codici (non è il codice completo ma solo la parte iniziale) se qualcuno puo spiegarmi la differenza dato che il compilatore li corregge senza errori entrambi il primo codice è un copia e incolla di come dovrebbe essere fatto l'esercizio il secondo invece è stato scritto da me e ho visto che al compilatore va bene comunque grazie

-PRIMO CODICE-
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Example extends JFrame{
public JLabel label;
public final JButton bt = new JButton("Prova");
public final JTextField = new JTextField();
public Example(String title) {
super(title);
label = new JLabel("Hello World");
setSize(900, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Example("Test program");
}
}
-SECONDO CODICE-
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Example extends JFrame{
public JLabel label;
public final JButton bt;
public final JTextField;
public Example(String title){
this.bt = new JButton("prova");
this.tf = new JTextField();
this.label = new JLabel("Hello world");
setSize(900, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Example("Test program");
}
}

vorrei capire la differenza dato che nel primo codice utilizza anche il metodo super(title) mentre nel secondo il compilatore non me lo chiede ma vuole this. per gli oggetti bt,tf e label grazie.

1 Risposte

  • Re: Frame java

    L'unica differenza degna di nota tra i due codici è proprio l'uso del super().
    Nel primo codice viene invocato il costruttore di JFrame che prende una stringa da usare come titolo della finestra.
    Nel secondo questo non avviene (viene quindi invocato il super senza parametri e il parametro title passato al costruttore di Example viene semplicemente ignorato: la finestra creata non avrà alcun titolo).
    L'uso del this è facoltativo, non essendoci problema di ambiguità di scope.
    Nel primo codice gli oggetti vengono inizializzati in linea al momento della loro dichiarazione, mentre nel secondo caso c'è prima la loro dichiarazione e poi l'inizializzazione all'interno del costruttore della classe. A livello semantico non c'è alcuna differenza; a livello di esecuzione, le inizializzazioni dei membri a livello di dichiarazione vengono effettuate appena prima del corpo del costruttore (e appena dopo la costruzione della superclasse).
Devi accedere o registrarti per scrivere nel forum
1 risposte