2013-07-15 24 views
1

我用一個按鈕創建了一個JFrame類,我想要它,所以當您按下按鈕時,它會將您帶到啓動畫面而不打開另一個JFrame。但我如何做到這一點?我希望新屏幕中間有一個圖像和一個加載GIF?在netbeans中創建一個加載屏幕

回答

2

「我創建了一個JFrame類有一個按鈕,我想它,所以當你 按下按鈕,它會帶你到一個啓動畫面,而無需打開另一個 JFrame的。」

因此,我們可以假設這意味着您要使用當前的JFrame顯示啓動畫面。

你可以使用一個CardLayout如果您使用的是GIF活躍的「屏幕」或「板」

之間進行切換,最簡單的解決辦法是通過ImageIcon加載圖像,並使用JLabel以使其(假設這是一個動畫GIF),否則,你可以在Reading/loading an Image看看到的圖像(並通過JLabel顯示它)

3

我想做什麼,就是用SwingWorkerJWindow

import javax.swing.JFrame; 
import javax.swing.JWindow; 
import javax.swing.SwingUtilities; 
import javax.swing.SwingWorker; 

public class Splashscreen { 
    JWindow window = new JWindow(); 

    public void start() { 
     window.setSize(400, 300); 
     // window.pack(); 
     window.setLocationRelativeTo(null); 
     window.setVisible(true); 

     new StartWorker().execute(); 
    } 

    private class StartWorker extends SwingWorker<Void, Void> { 

     @Override 
     protected Void doInBackground() throws Exception { 
      // Do background process 
      Thread.sleep(2000); 
      return null; 
     } 

     @Override 
     protected void done() { 
      JFrame frame = new JFrame(); 
      frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
      frame.setSize(640, 480); 
      frame.setLocationRelativeTo(null); 
      frame.setVisible(true); 
      // Dispose window when background process is finished 
      window.dispose(); 
     } 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new Splashscreen().start(); 
      } 
     }); 
    } 
} 

所以,當你實例化Splashscreen類和調用start方法JWindow將被顯示和SwingWorker將被執行。將顯示JWindow,直到後臺進程(耗時的任務)完成。處理完成後,將顯示JFrame,並處理JWindow

但是!就你的情況而言,我建議堅持使用CardLayout,正如MadProgrammer在他的回答中所述。