Best Practice Mit JFrame Konstruktoren?
In beiden meinen Java-Klassen, und die Bücher, die wir bei Ihnen über ein GUI mit dem code zu stark engagiert ist der Konstruktor der JFrame. Die standard-Technik, die in den Büchern scheint es zu sein, initialisiert alle Komponenten und fügen Sie diese in den JFrame im Konstruktor, und fügen Sie anonyme event-Handler behandeln Ereignisse, die, wo notwendig, und das ist, was geraten wurde, in meiner Klasse.
Scheint dies ziemlich einfach zu verstehen und leicht, mit zu arbeiten bei der Erstellung eine sehr einfache GUI, aber scheint sich schnell hässlich und umständlich machen, wenn etwas anderes als eine sehr einfache gui. Hier ist ein kleines code Beispiel, was ich beschrieben habe:
public class FooFrame extends JFrame {
JLabel inputLabel;
JTextField inputField;
JButton fooBtn;
JPanel fooPanel;
public FooFrame() {
super("Foo");
fooPanel = new JPanel();
fooPanel.setLayout(new FlowLayout());
inputLabel = new JLabel("Input stuff");
fooPanel.add(inputLabel);
inputField = new JTextField(20);
fooPanel.add(inputField);
fooBtn = new JButton("Do Foo");
fooBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//handle event
}
});
fooPanel.add(fooBtn);
add(fooPanel, BorderLayout.CENTER);
}
}
Ist diese Art der Verwendung des Konstruktors der beste Weg, um code, der eine Swing-Anwendung in java? Wenn ja, was für Techniken kann ich verwenden, um sicherzustellen, dass dieser Typ-Konstruktor wird organisiert und wartbar? Wenn nicht, was ist die empfohlene Art und Weise zu nähern, putting zusammen einen JFrame in java?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider gibt es viele schlechte Bücher gibt. Und eine Menge schlechter code.
Sollte man nicht missbrauchen Vererbung, indem Sie Sie, wo Sie nicht notwendig sind. (Okay, es ist der Double-Brace-idiom, das komplette Erbe Missbrauch.) Dies gilt für
JFrame
,JPanel
,Thread
und praktisch alles außerjava.lang.Object
.Außerdem ist es eine sehr gute Idee, um Felder
private
und wo möglichfinal
. Es stellt sich heraus, dass Verweise auf Komponenten in der Regel nicht brauchen, um in Feldern gespeichert, zumindest nicht so wie dieses.Wenn man eine komplexere UI-ich empfehle, dass Sie verschiedene JPanels aus dem JFrame, so werden Sie zu "Module" oder "Bausteine" der Benutzeroberfläche.
Wie Sie gerade gesagt haben, dies scheint zu sein, eine Technik, die gelehrt wird, durch die Bücher. Das, was ich zu tun, um zumindest ein bisschen einen überblick über die verschiedenen Aspekte, ist die Trennung der ui-Ansichten von ui-Controllern. In Ihrem Fall würde dies bedeuten, dass Sie schreiben konnte, getrennte Klassen für die Ereignisbehandlung. Eine weitere hilfreiche Technik ist die Verwendung von privaten Methoden für die Trennung der verschiedenen Teile der Benutzeroberfläche. In anderen Worten, die Allgemeine Refactoring-Techniken, die hilfreich sein könnten in diesem Fall als gut.
Habe ich keine Feste Regeln, außer :