程序进度条无反应,求解答

开发者10086 2023-08-20 14:19:11
import java.awt.*;
import javax.swing.*;
public class ThreadTest extends JFrame{
	JProgressBar jpb = new JProgressBar(0, 100);
	JLabel j1 = new JLabel("正在下载"),j2 = new JLabel();
	Thread th = new Thread(new InClass());
	Font f = new Font("微软雅黑", Font.PLAIN, 12);
	Container c = getContentPane();
	public void init() {
		jpb.setFont(f);
		j1.setFont(f);
		j2.setFont(f);
		th.start();
		c.add(j1,"North");
		c.add(j2,"Center");
		c.add(jpb,"South");
		
		setVisible(true);
		setSize(250,150);
		setLocation(150, 100);
		setTitle("下载");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setResizable(false);
	}
	class InClass implements Runnable{
		int count = 0;
		@Override
		public void run() {
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			count++;
			jpb.setValue(count);
			j2.setText("已完成:" + jpb.getValue() + "%");
			if (jpb.getValue() == 100) {
				JOptionPane.showMessageDialog(ThreadTest.this, "下载完成","提示", JOptionPane.QUESTION_MESSAGE);
				System.exit(0);
			}
			c.add(j1,"North");
			c.add(j2,"Center");
			c.add(jpb,"South");
			c.validate();
		}
	}
	public static void main(String[] args) {
		new ThreadTest().init();
	}
}

进度条无反应,不知道哪里出了异常

...全文
55 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

不要在子线程里面进行界面修改,界面修改应该使用Message 对象发到主线程去修改

100,019

社区成员

发帖
与我相关
我的任务
社区描述
CSDN内容合伙人、华为云享专家、阿里云专家、IT桃花岛公号号主、JAVA领域优质创作者
旅游 个人社区
社区管理员
  • 桃花键神
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧