关于Java Swing的一般问题

sta*_*orn 7 java swing

我制作了一个功能相当简单的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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

mis*_*tor 8

使用模型 - 视图 - 控制器设计模式.它涉及将用户界面代码与业务逻辑分离.

编辑:

由于OP正在寻找有组织的代码而不是灵活的设计,我已从我的答案中删除了NetBeans UI Designer部分.


ric*_*chj 5

考虑到每个应用程序都有相同的问题,组织任何重要大小的用户界面代码是一个问题,关于它的写得令人惊讶.有一些技术可以帮助:

  1. 重构 - 在代码变得不整洁后进行清理.
  2. 模型视图控制器模式 - 分离关注点.
  3. 面向对象设计 - 使用许多小型的合作类而不是大块的代码.
  4. "On event Do action " - 用于将动作与视图分离的习语.
  5. UML组件模型 - 可视化类级别以上的设计概念.
  6. 依赖性倒置原则 - 组织代码依赖性.

基本的设计技术已经存在了很长时间,并且很好理解,但是在更大规模上应用这些技术似乎是针对每个应用单独设计的.

我看到有效应用的一种方法是将事件,监听器,操作等分离到它们自己的类中,并按类型将它们组织成包,或者在包之间使用一致的命名约定,以便组件及其关联的类是容易识别(XDialog,XDialogMouseListener,XDialogCancelAction等).

另一种方法是查看一些大型开源应用程序(Eclipse,Firefox,...),并了解它们如何组织GUI代码.