创建Swing Java应用程序的正确方法

问题描述 投票:-1回答:2

我之前有过在学校学习应用程序的经验,所以我知道它们是如何工作的并且设计得很好,但我不确定设置应用程序的最佳方法。

我们只在学校创建了较小的程序,所以我们几乎所有的代码都在构造函数中,但我想创建更大的东西,并且不确定我应该如何设置。

我的基类有构造函数,它将创建我将在整个应用程序中使用的JFrame,但是我要添加组件或使用动作侦听器来创建哪些类?我不确定这样做的正确方法,所以一个指导步骤将是伟大的。

这是我的类声明/构造函数:

public class SwingApp1 extends JFrame{

    public SwingApp1() {
        setTitle("Greens Tracker");
        setSize(800,500);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }

}

现在,我应该在主要内容中添加什么,以及以何种方式添加组件?

任何帮助表示赞赏,谢谢!

java swing user-interface constructor
2个回答
1
投票

设置JFrame的好方法是

public GUI() {
    buildGUI();
}

private void buildGUI() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setSize(500, 300);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new GUI().setVisible(true);
        }
    });

}

我希望它有帮助:)


0
投票

该计划从主要开始:

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new SwingApp1().setVisible(true);
        }
    });
}

自Java 8以来可以缩写为:

public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> new SwingApp1().setVisible(true));
}

JFrame构造函数可以如下。一个setVisible我留给调用,pack()将布局内容。

public SwingApp1() {
    setTitle("Greens Tracker");
    setSize(800,500);
    ... add components, maybe in a separate method.
    pack();
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}

实际上看看MVC,模型视图控制器。

我通常将XyzApplication类作为控制器,JFrame是主视图,而单独保存的数据(在应用程序中)是模型。

应该提到的是,没有FXML布局文件,JavaFX可能稍微更可取。更多的学习涉及,但更好的行为。

其他建议是使用像maven这样的构建基础架构。这有助于库(“依赖项”)并提供“最佳实践”,如构建目录(src / main / java,src / test / java,src / main / resources ...)。

当然是像git或mercurial这样的版本控制系统。

© www.soinside.com 2019 - 2024. All rights reserved.