需要完成的功能是从登陆界面Frame跳转到目标Frame,之间需要大概3-4秒这样就在跳转的过程中加入一个进度条的Frame,请看代码:封装继承Window类
public class ProgressBarWindow extends Window{
private JFrame jf;
public ProgressBarWindow(JFrame jf,JProgressBar aJProgressBar){
super(jf);
this.jf = jf;
this.jf.setAlwaysOnTop(true);
this.jf.setVisible(true);
this.jf.setSize(500,100);
this.jf.setTitle("进入");
this.jf.setLocationRelativeTo(null);
this.jf.setLayout(new BorderLayout(10,5));
this.jf.add(aJProgressBar);
this.jf.setVisible(true);
}
public JFrame getFrame(){
return this.jf;
}
}在Frame中的代码:键盘监听到ENTER键开始调用
pbw = new ProgressBarWindow(new JFrame(),aJProgressBar);
dispose();//关闭登陆界面TeleAFrame nfr = new TeleAFrame(1);//目标Frame
nfr.setVisible(true);在目标界面的末尾加入
pbw.getFrame().dispose();结果出现的问题是,进度条所在Frame没显示进度条,而是显示登陆Frame的底图,就像IE死机时候不能刷新的那种感觉,过了大概3秒钟才会自动变出进度条用repaint()也没用,我觉得是刷新的问题,但是不知道怎么解决
public class ProgressBarWindow extends Window{
private JFrame jf;
public ProgressBarWindow(JFrame jf,JProgressBar aJProgressBar){
super(jf);
this.jf = jf;
this.jf.setAlwaysOnTop(true);
this.jf.setVisible(true);
this.jf.setSize(500,100);
this.jf.setTitle("进入");
this.jf.setLocationRelativeTo(null);
this.jf.setLayout(new BorderLayout(10,5));
this.jf.add(aJProgressBar);
this.jf.setVisible(true);
}
public JFrame getFrame(){
return this.jf;
}
}在Frame中的代码:键盘监听到ENTER键开始调用
pbw = new ProgressBarWindow(new JFrame(),aJProgressBar);
dispose();//关闭登陆界面TeleAFrame nfr = new TeleAFrame(1);//目标Frame
nfr.setVisible(true);在目标界面的末尾加入
pbw.getFrame().dispose();结果出现的问题是,进度条所在Frame没显示进度条,而是显示登陆Frame的底图,就像IE死机时候不能刷新的那种感觉,过了大概3秒钟才会自动变出进度条用repaint()也没用,我觉得是刷新的问题,但是不知道怎么解决
package test;import java.util.Random;/**
* 测试扩展Thread类实现的多线程程序
*/
public class TestThread extends Thread{
public TestThread(String name) {
super(name);
} public void run() {
for(int i = 0;i<5;i++){
try {
//产生10000以内的随机整数
int time = new Random().nextInt(10000);
Thread.sleep(time);
System.out.println("生产了1个"+this.getName()+":耗时"+time+"毫秒");
} catch (InterruptedException e) {
}
}
} public static void main(String[] args) {
Thread t1 = new TestThread("苹果");
Thread t2 = new TestThread("鸭梨");
t1.start();
t2.start();
}
}