Dav*_*rry 7 java swing constructor jframe
在我的两个Java类和我们在其中使用的书中,使用代码构建的GUI大量涉及JFrame的构造函数.书中的标准技术似乎是初始化所有组件并将它们添加到构造函数中的JFrame,并添加匿名事件处理程序来处理需要的事件,这就是我班级所倡导的内容.
这似乎很容易理解,并且在创建一个非常简单的GUI时很容易使用,但在制作除了非常简单的gui之外的任何东西时似乎很快变得丑陋和麻烦.这是我所描述的一个小代码示例:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
这种使用构造函数是在java中编写Swing应用程序的最佳方法吗?如果是这样,我可以使用哪些技术来确保这种类型的构造函数是有组织和可维护的?如果没有,建议在Java中组合JFrame的方法是什么?
不幸的是,那里有很多坏书。还有很多糟糕的代码。
您不应在不必要的地方滥用继承。(好吧,有一个双括号惯用语,这完全是继承滥用。)这适用于JFrame、JPanel、Thread以及除 之外的几乎所有内容java.lang.Object。
private在可能的情况下创建字段也是一个非常好的主意final。事实证明,对组件的引用通常不需要存储在字段中,至少不需要像这样。