Java 如何为jframe实现多线程
我使用以下代码实现多线程:Java 如何为jframe实现多线程,java,multithreading,Java,Multithreading,我使用以下代码实现多线程: class Progress extends JFrame implements Runnable { Thread t; JProgressBar current; JTextArea out; JButton find; Thread runner; JFrame tframe; int num = 0; public Progress() { t=new Thread(this,"Thread1"); t.start(); } publ
class Progress extends JFrame implements Runnable {
Thread t;
JProgressBar current;
JTextArea out;
JButton find;
Thread runner;
JFrame tframe;
int num = 0;
public Progress() {
t=new Thread(this,"Thread1");
t.start();
}
public void run()
{
tframe=new JFrame("Please wait");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pane = new JPanel();
pane.setLayout(new FlowLayout());
current = new JProgressBar();
//current.setValue(0);
current.setStringPainted(true);
current.setIndeterminate(true);
pane.add(current);
setContentPane(pane);
tframe.add(pane);
tframe.pack();
tframe.setSize(300,100);
tframe.setResizable(false);
tframe.setAlwaysOnTop(true);
tframe.setLocation(300,300);
tframe.setVisible(true);
}
public void stop()
{
tframe.dispose();
}
当我需要启动线程时,我使用
Progress t=new Progress(); .
这将显示帧,要停止,我使用t.stop();然而,我并没有得到期望的多线程效果。仅显示帧,而不显示无生命进度条。请注意,当用作单个线程时,将显示进度条
这里必须做什么?请帮忙,提前谢谢这是完全错误的。Swing是单线程的。与swing组件的每个交互都必须在单个事件调度线程中完成。仔细阅读。它解释了在使用多个线程时必须如何执行操作。另请阅读。要更快地获得更好的帮助,请发布一篇文章。我猜所有的源代码都需要成为一个SSCCE,是一个
main(String[])
方法和一些导入。-1:我是一个非常稀疏的向下投票人(1100多张投票中只有27张),但你的答案是严重误导的。“这是完全错误的”这不是完全错误。可能存在缺陷,但并非完全错误。“Swing是单线程的”我不知道从哪里开始。那只是。。。错了!Swing本质上是多线程的,支持多种类型的其他非必要线程。我没有说别的,我将OP指向官方的swing教程,该教程解释了如何使用多线程。关于这个问题所涉及的多线程方面,OP的代码确实是完全错误的。听起来可能很刺耳,但这是事实。我的回答一点也不误导,因为它引导OP找到了合适的文档。