Java 如何线程化 GUI

标签 java multithreading swing event-dispatch-thread

所以我有一个按钮打开一个 while 循环,然后我的整个 GUI 卡住,直到 while 循环结束,也就是说我如何线程化我的 GUI 以每秒左右更新一次?

JButton Test= new JButton();
Test.setText("Test");
Test.setSize(230, 40);
Test.setVisible(true);
Test.setLocation(15, 290);

Test.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e){
int x = 0;
while(x<500){
    x++
});

最佳答案

最重要的想法是,您的 GUI 卡住是因为您在负责绘制 GUI 的线程中进行了大量处理;解决方案是将计算或任何可能需要时间的处理委托(delegate)给将在后台执行的线程。 https://docs.oracle.com/javase/tutorial/uiswing/concurrency/

关于Java 如何线程化 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38813497/

相关文章:

java - 使用 java DOM 替换/更改 XSD 文件中的元素类型

c++ - 线程通信的 myDesign 是否可以接受?

java - 限制一个java命令的线程数

c# - 如何调用具有某种优先级的异步方法?

java - 将使用 JPanel 扩展的类添加到现有 JPanel

java - 如何添加ActionListener来自定义组件

java - System.out.println 和 String 参数

java - 在此代码中,我得到了无法解析符号 R

java - 试图在 Java 中初始化 Scala 创建的类

java - 使用用户指定的计时器更新图形用户界面中的 JPanel 和属性?