需要完成的功能是从登陆界面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()也没用,我觉得是刷新的问题,但是不知道怎么解决

解决方案 »

  1.   

    还有一种可能,就是这个鬼Frame显示很慢,需要3秒钟左右的初始化时间
      

  2.   

    键盘监听到ENTER键开始调用,启动一个线程去调用这个进度条。这个需要JAVA的多线程。
      

  3.   

    再说一个情况,就是故意让目标界面Frame延迟十秒钟才出现,则进度条也延迟十秒钟才和目标Frame一起出现
      

  4.   

    这个是多线程的代码示例,当然还有实现Runnable接口也可以实现多线程,这个你上网搜搜,启个线程调用进度条就应该没问题了。该回去睡觉了,你好好研究下线程,挺好玩的!
    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();
        }
    }