2012-05-19 47 views
0

我正在啓動屏幕上工作。我設法做了一堂課。下面是一個顯示啓動畫面的類。我的問題是如果我從JFrame調用這個類並運行,JFrame和Splash屏幕同時運行,並且在啓動屏幕持續時間過後,它們都關閉。如何讓它們同時顯示?如何同時顯示啓動畫面,然後顯示我的JFrame?

多謝

public class Splash extends JWindow { 

AbsoluteLayout abs; 
AbsoluteConstraints absImage, absBar; 
ImageIcon image; 
JLabel label; 
JProgressBar bar; 

public Splash() { 
    abs = new AbsoluteLayout(); 
    absImage = new AbsoluteConstraints(0, 0); 
    absBar = new AbsoluteConstraints(0, 210); 
    label = new JLabel(); 
    image = new ImageIcon(this.getClass().getResource("anime.gif")); 
    label.setIcon(image); 
    bar = new JProgressBar(); 
    bar.setPreferredSize(new Dimension(350,10)); 
    this.getContentPane().setLayout(abs); 
    this.getContentPane().add(label, absImage); 
    this.getContentPane().add(bar, absBar); 

    new Thread() { 

     public void run() { 
      for (int i = 0; i < 100; i++) { 
       bar.setValue(i); 
       try { 
        sleep(80); 
       } catch (InterruptedException ex) { 
        Logger.getLogger(Splash.class.getName()).log(Level.SEVERE, null, ex); 
       } 
      } 
      System.exit(0); 
     } 
    }.start(); 
    this.pack(); 
    this.setLocationRelativeTo(null); 
    this.setVisible(true); 

} 

}

回答

1

你覺得什麼樣的影響是

System.exit(0); 

將會對你的計劃嗎?這是關閉窗口的大錘方法,因爲它會導致JVM退出,關閉它正在運行的所有事物。

你看過使用Java Swing提供的SplashScreen對象嗎?

+0

我知道那行代碼的作用。我只是沒有找到一個替代方案,因此我在這裏尋求幫助。謝謝我會檢查擺動中的SplashScreen –

+0

@da_elysian_fields:如果你不想顯示一個窗口,你可以在窗口調用'setVisible(false)'。但是'System.ext(0)'也會結束程序而沒有恢復的機會。 –

+1

*「Java Swing提供的SplashScreen對象」*(禮貌咳嗽)ITYM *「.. AWT提供」*它是解決此問題的最佳方法。 –

0
window.dipose(); 

dipose()將關閉窗口。