import java.awt.*;
import javax.swing.*;
public class Jointest extends JFrame{
Thread t1;
Thread t2;
JProgressBar p1=new JProgressBar();
JProgressBar p2=new JProgressBar();
public Jointest(){
getContentPane().add(p1,BorderLayout.NORTH);
getContentPane().add(p2,BorderLayout.SOUTH);
p1.setStringPainted(true);
p2.setStringPainted(true);
t1=new Thread(new Runnable(){
public void run(){
int count=0;
while(true){
p1.setValue(count++);
try{
Thread.sleep(100);
t2.join();
}catch(Exception e){
e.printStackTrace();
}
}
}
});
t1.start();
t2=new Thread(new Runnable(){
public void run(){
int count=0;
while(true){
p2.setValue(count++);
try{
Thread.sleep(100);
}catch(Exception e){
e.printStackTrace();
}
if(count==101){
break;
}
}
}
});
t2.start();
}
public static void init(JFrame frame,int width,int height){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(width,height);
frame.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
init(new Jointest(),200,200);
}
}
这个程序为什么不能实现进度条p2每次都从0%到100%,同时对应进度条p1前进1%?线程t2只能被执行一次么?
另外,
Thread t1;
Thread t2;
JProgressBar p1=new JProgressBar();
JProgressBar p2=new JProgressBar();
这四句如果放在构造方法里就会报错,报错后把p1、p2的修饰符加上final就没问题了,但是t1、t2加了final还是不对,这是为什么啊。。