java - 用 Java 编写 GUI 的常规方法是什么?

标签 java swing user-interface actionlistener thread-sleep

<分区>

我已经完成了一个 GUI 应用程序。我有四个类:Main、UserWindow、Task1、Task2Main 类包含一个 boolean 变量 buttonStartPressedMain 方法启动 UserWindow 类的实例,并等待用户按下 Start 按钮。当用户按下开始按钮(在 UserWindow 中)时,ActionListenertrue 分配给 static boolean buttonStartPressed 并且Main 方法继续。

主.java

public static void ......
static boolean buttonStartPressed = false;

...........

while (!buttonStartPress) {
Thread.sleep(50);
}

Task1 t1 = new Task1();

.....
}
}

工作正常,但我不喜欢 while 循环。我觉得这不是编写应用程序的常规方法。还有另一种方法:我可以组合 MainUserWindow 类,ActionListener (buttonPressed) 的结果将是 Task1 的开始.但是,另一方面,我认为 Main 类和 UserWindow 类应该彼此分开。

最佳答案

是的,这是错误的。你不应该有繁忙的循环......任何地方。

你甚至需要 buttonStartPressed 变量吗?为什么你会对知道它是否被按下感兴趣,当按钮被按下时执行一些 Action 不是主要的想法吗?

您应该在 actionPerformed() 方法中创建 Task1,并根据您尝试执行的操作启动一个线程来执行该任务(或者只是在 EDT 中运行它如果它真的很快,那么它就不会卡住 GUI)。

关于java - 用 Java 编写 GUI 的常规方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19166042/

相关文章:

java - 设置水平和垂直边距

java线程和jtabbedpane

C# - 图形用户界面问题

java - 如何通过按钮监听器中断线程

java - 我可以在 Java 程序中使用 Google+ 帐户进行身份识别吗?

java - 拦截方法声明

java - ActionListener 和动态(?)GUI

JavaFX : How to dynamically add textfields and buttons on user input

c# - 如何在 Visual C# 中重置轨迹栏?

java - 由于 HAL+JSON 媒体类型不明确,无法使用 Spring HATEOAS 执行 HAL+JSON Level 3 RESTful API