在我的两个
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);
}
}
这种使用构造函数是在java中编写Swing应用程序的最佳方法吗?如果是这样,我可以使用哪些技术来确保这种类型的构造函数是有组织和可维护的?如果没有,建议在Java中组合JFrame的方法是什么?
解决方法
不幸的是,那里有很多坏书.还有很多不好的代码.
你不应该在没有必要的地方使用它来滥用继承. (好吧,还有Double Brace习惯用法,这是完全继承滥用.)这适用于JFrame,JPanel,Thread以及除java.lang.Object之外的所有内容.
另外,将字段设为私有且最终可能是最佳的,这是一个非常好的主意.事实证明,对组件的引用通常不需要存储在字段中,至少不是这样.