我之前有过在学校学习应用程序的经验,所以我知道它们是如何工作的并且设计得很好,但我不确定设置应用程序的最佳方法。
我们只在学校创建了较小的程序,所以我们在构造函数中几乎拥有了所有代码,但我想创建更大的东西,并且不确定我应该如何设置。
我的基类有构造函数,它将创建我将在整个应用程序中使用的JFrame,但是我要添加组件或使用动作侦听器来创建哪些类?我完全不确定这样做的正确方法,所以指导步骤会很棒。
这是我的类声明/构造函数:
public class SwingApp1 extends JFrame{
public SwingApp1() {
setTitle("Greens Tracker");
setSize(800,500);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
}
现在我应该在主要内容中添加什么,以及在添加组件时应该采用什么样的方式?
感谢任何帮助,谢谢!
答案 0 :(得分: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);
}
});
}
我希望它有所帮助:)。
答案 1 :(得分: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类视为 controller ,JFrame是主视图,而单独保存的数据(在应用程序中)是模型
应该提到的是,没有FXML布局文件,JavaFX可能稍微更可取。更多的学习涉及,但更好的行为。
其他建议是使用 maven 等构建基础架构。这有助于库(“依赖项”)并提供“最佳实践”,如构建目录(src / main / java,src / test / java,src / main / resources ...)。
当然是版本控制系统,如git或mercurial。