JFrame java

Fab996
Non capisco questa parte di codice...
import javax.swing.JFrame;
//Applicazione che visualizza un frame sullo schermo
//Crea una nuova FrameSemplice.
public FrameSemplice() {
super();
this.setTitle("Sono una finestra);
this.setSize(300,100);
this.DefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

super importa il costruttore della classe JFrame, però non capisco perchè bisogna mettere this...

Risposte
apatriarca
this non è necessario, ma alcune persone preferiscono metterlo sempre.

Fab996
"apatriarca":
this non è necessario, ma alcune persone preferiscono metterlo sempre.

Ti ringrazio però non capisco bene il codice perchè solitamente sono abituato a fare per creare una classe in questo modo:
class Persona {
String nome;
String cognome;
//Inizializzo il costruttore
public Persona(nome,cognome) {
this.nome=nome;
this.cognome=cognome;
}

apatriarca
Non capisco il dubbio. Se avessi dei campi all'interno della classe dovresti inizializzarli come hai mostrato (o in altri modi che dipendono da cosa tu voglia fare). In questo caso i campi della classe padre vengono inizializzati in super() e stai quindi poi richiamando semplicemente dei metodi della classe genitore per settare il titolo della finestra e altre cose.

Fab996
"apatriarca":
Non capisco il dubbio. Se avessi dei campi all'interno della classe dovresti inizializzarli come hai mostrato (o in altri modi che dipendono da cosa tu voglia fare). In questo caso i campi della classe padre vengono inizializzati in super() e stai quindi poi richiamando semplicemente dei metodi della classe genitore per settare il titolo della finestra e altre cose.

ma non dovrebbe essere cosi il codice
public class FrameSemplice extends JFrame{
//costruttore
public class FrameSemplice(){
super();
}
this.setTitle(Una frame semplice);
this.setSize(300,100);
}

perchè il costruttore viene richiamato con super() che invoca il costruttore Frame(), però non capisco perchè setTitle() e setSize() stanno dentro il costruttore FrameSemplice()...

Fab996
"apatriarca":
Non capisco il dubbio. Se avessi dei campi all'interno della classe dovresti inizializzarli come hai mostrato (o in altri modi che dipendono da cosa tu voglia fare). In questo caso i campi della classe padre vengono inizializzati in super() e stai quindi poi richiamando semplicemente dei metodi della classe genitore per settare il titolo della finestra e altre cose.

Penso di aver capito, l'unica cosa che ancora non ho molto chiara è come funziona super();

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.