Suri0301 2022-06-18 15:54 采纳率: 50%
浏览 24
已结题

GUI实现多线程?没读懂啊

创建一个如下图所示GUI包含4个相同的部分,每个部分有一个独立的worker thread实现计数功能,从TextField输入从1~100,000,000中任意一个数,每间隔一段时间,Label表示当前worker thread所统计的数值。Start Button首先是否有正在计数的work thread运行,如果有正在运行的work thread, 中断该thread的运行,从零开始计数。Stop Button将会中断worker threads的运行。
实现细节:创建一个继承于JPanel的子类JCount,可以选用BoxLayout布局。提示采用SwingUtilities.invokeLater在Swing Thread里创建GUI。


```java
public class JCount extends JPanel {
private static void createAndShowGUI() { 
     // create your GUI HERE
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
    public void run() {
                        createAndShowGUI(); 
                }
            }); 
        }
    }

每个JCount包括TextFieldLabelButton以及其他保留计数的变量。Panel之间隔开可以在每个JCount中添加例如下面语句:
add(Box.createRigidArea(new Dimension(0,40)));
一旦Worker Thread创建,立即从0开始计数到Text Field中输入的数,每数到10,000Worker Thread会睡眠100 milliseconds,并更新Label数值到当前数到的数值,更新Label的操作仅能在Swing Thread里完成,因此需要用到SwingUtilities.invokeLater。确保Worker Thread在被中断或者完成计数时结束运行。
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/138387835556160.png "#left")
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 6月26日
    • 创建了问题 6月18日

    悬赏问题

    • ¥15 机器学习预测遇到的目标函数问题
    • ¥15 python的EOFError该怎么解决?
    • ¥15 Fluent,液体进入旋转区域体积分数不连续
    • ¥15 java linux下将docx文件转pdf
    • ¥15 maven无法下载依赖包
    • ¥15 关于pycharm, Callable[[str],bool]作为方法参数使用时, lambda 类型不提示问题
    • ¥15 layui数据重载无效
    • ¥15 寻找了解qq家园纵横四海的程序猿。
    • ¥15 optisystem
    • ¥15 VB.NET画图时的撤销编程