由于关于“最佳做法”的构成似乎存在一些争议,因此,我将为您提供最适合我的发现,以及我的推理:
1.每个窗口都应扩展Jframe或JDialog(取决于窗口的类型)。这使得无需每次指定特定对象即可轻松控制窗口的属性。不过,这更多的是一般情况,因为我知道这两种方法都是这样做的。
2.该
main()方法应在单独的类中。这增加了在其他地方使用您的窗口类的可能性,因为它们与特定的实现无关。从技术上讲,这没有什么区别,但是应用程序启动代码只是不属于窗口。
3.侦听器应位于匿名内部类中。您的顶级类不应实现任何侦听器。这样可以防止类似黑客的行为,除了它们所连接的对象之外,都可以从任何地方调用侦听器方法。
这是一个具有单个框架的简单应用程序,用于演示这些做法:
public class Main { public static void main(String[] args) { final String text = args[0]; SwingUtilities.invokeLater(new Runnable() { @Override public void run() { final MyWindow wnd = new MyWindow(text); wnd.setVisible(true); } }); }}public class MyWindow extends Jframe { public MyWindow(String text) { super("My Window"); setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { MyWindow.this.setVisible(false); MyWindow.this.dispose(); } }); final JButton btn = new JButton(text); btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(MyWindow.this, "Button Pressed", "Hey", JOptionPane.INFORMATION_MESSAGE); } }); setLayout(new FlowLayout()); add(btn); pack(); }}


