与this wiki形成对比的是,我正在从编码的角度寻找实现Swing控件的合适方法。
我一直在寻求学习Java和它的图形用户界面工具,但是我发现互联网教程一个接一个地使用main
,我知道这是不正确的。
我也尝试过像Netbeans和其他“可视化”编辑器这样的RAD系统,但是当我开始编码的时候,我已经有了一堆代码,我不知道它做了什么,所以我打算学习手工编写swing代码,我知道基本的控件和布局,但希望以正确的方式完成它。
有没有我遗漏的模型或标准?
示例问题...
我要扩展JFrame并创建我自己的frame对象吗?(我假设是)
我是否要将主菜单封装在该frame对象中?或者我自己创建?等等。
如何将“视图”逻辑与“应用”逻辑分开?
基本上,我正在寻找什么是行业标准,关于如何组织代码。
发布于 2011-03-29 22:52:50
由于关于什么是“最佳实践”似乎存在一些争论,我将给出我发现的最适合我的方法,以及我的推理:
main()
方法应该在单独的类中。这增加了在其他地方使用窗口类的可能性,因为它们不绑定到特定的实现。从技术上讲,这没有什么不同,但应用程序启动代码不属于窗口。下面是一个简单的应用程序,其中包含一个框架来演示这些实践:
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();
}
}
发布于 2011-03-29 23:59:35
我同意all of Jonathan's points的观点。
我还想补充以下几点:
在让组件处理事件方面,我通常会采取与Jonathan略有不同的方法,但我相信他的方法比我的方法更简洁。
另外,还要学习MVC和分层架构的使用。最好不要把UI和业务逻辑混在一起。
https://stackoverflow.com/questions/5473828
复制相似问题