Swing: Instansierer komponenter før eller i konstruktøren?
HejsaDette er måske mere en undren, end et komplekst spørgmål...
Jeg er ved at sætte mig ind i Swing (jæh!) og de bøger jeg bruger, er meget forskellige i deres måde at opskrive klasser.
Måske er det gældende for alle typer af klasser, ikke kun swing, men det er her jeg er faldet over "problemet"...
Her er et simpel eksempl;
//
import javax.swing.*;
public class testFrame extends JFrame{
JButton login = new JButton("Login");
JButton clear = new JButton("Clear");
JTextField brugernavn = new JTextField(15);
JPasswordField password = new JPasswordField(15);
JLabel passEtiket = new JLabel("Password: ");
JLabel brugerEtiket = new JLabel("Brugernavn: ");
public testFrame(){
super("Test af Frames");
setSize(300, 180);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.add(brugerEtiket);
panel.add(brugernavn);
panel.add(passEtiket);
panel.add(password);
panel.add(login);
panel.add(clear);
setContentPane(panel);
}
public static void main(String[] args){
testFrame tF = new testFrame();
tF.show();
}
}
I eksemplet instansieres komponenterne buttons og labels, før (eller udenfor) konstruktøren - men i andre ekspempler flyttes det ind i selve konstruktøren. Er det ene mere "korrekt" end det andet?
I eksemplet nedarver testFrame constructor-metoden direkte fra JFrame klassen. Igen; hvilken forskel ville det gøre, hvis man droppede "extends JFrame" og istedet brugte "JFrame testFrame = new JFrame();" i konstruktøren? Den impoterer jo JFrame-klassen fra javax.swing.* alligevel
Håber der er nogen der kan give mig en ide om hvad der vil være god javakode-etik, eller hvad man skal kalde det.
Hvis den en form er mere rigtig en den anden, vil jeg hvertfald gerne have det på plads fra starten :)