我制作了一个功能相当简单的Swing应用程序。然而,在我看来,它所包含的代码变得相当大而且非常混乱。所有swing组件和操作都在一个文件中。因此,例如,如果我要创建一个具有更多功能的更大的应用程序,那么代码将很难通过。
所以我的问题是如何建立一个良好的代码结构。或者,如果有一个很好的网页,我可以阅读它,如果可能的话,一些代码示例。我查看了Sun关于Swing的教程,但是他们已经展示了这些相当简单的例子。
更新:我已经思考了一段时间并检查了一些例子。我不知道我的MVC模式是否正确。无论如何,我的想法是将每个JFrame分隔到他们自己的类文件中。之后我有一个MainFrame,它是应用程序的主窗口。从那个JFrame我创建了每个JFrame的一个实例。并使用Actions从MainFrame调用这些框架。我不知道这是不是一个好主意。然而,无论如何,它使代码更容易阅读。
以下是我的意思
的例子class Main implements ActionListener {
private JFrame frame = new JFrame();
private JButton button1 = new JButton();
private JPanel panel = new JPanel();
private FirstFrame frame1 = new FirstFrame();
private SecondFrame frame2 = new SecondFrame();
private ThirdFrame frame3 = new ThirdFrame();
public Main() {
button1.addActionListener(this);
}
public createGUI() {
frame.setTitle("Main");
frame.setSize(400,300);
panel.add(button);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
}
public static void main(String args[]) {
new Main().createGUI();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == button1)
{
frame1.enable();
}
}
}
答案 0 :(得分:8)
使用Model-View-Controller design pattern.它处理将用户界面代码与业务逻辑分离。
编辑:
由于OP正在寻找有组织的代码而不是灵活的设计,我已从我的答案中删除了NetBeans UI Designer部分。
答案 1 :(得分:5)
考虑到每个应用程序都有相同的问题,组织任何重要大小的用户界面代码都是一个令人惊讶的小问题。有一些技术可以提供帮助:
基本设计技术已经存在很长时间了,并且很好理解,但是应用更大规模的技术似乎是为每个应用程序单独设计的。
我看到有效应用的一种方法是将事件,监听器,操作等分离到它们自己的类中,并按类型将它们组织成包,或者在包之间使用一致的命名约定,以便组件及其组件相关类很容易识别(XDialog,XDialogMouseListener,XDialogCancelAction等)。
另一种方法是查看一些大型开源应用程序(Eclipse,Firefox,...),并了解它们如何组织GUI代码。
答案 2 :(得分:2)
我倾向于尽可能多地从Swing组件中提取非GUI相关功能。这意味着你有一些额外的间接性。但是:
我不一定在谈论一个完整的MVC模型(虽然这不是坏事)。它更像是一个类/包组织问题。
答案 3 :(得分:1)
保持头脑的是,UI编程就像其他类型的编程一样。不要认为这是特殊的,你可以忽略合理的做法。不幸的是,大多数教程代码非常糟糕,生产中的代码可能会更糟糕。
关键点:
JPanel
)。JFrame
和JPanel
之类的内容进行子类化很少,所以不要这样做。