2011-05-31 92 views
1

我想爲我的Java應用程序創建啓動畫面。我設法使用NetBeans默認工具來完成此操作,該工具允許我放置一些圖像。但是,我希望有一些「活動」,例如顯示應用程序加載狀態的進度條,一些動態文本等。我的Java應用程序的動態啓動畫面

我該怎麼做?我需要知道什麼才能開始做這樣的事情?

回答

1

關鍵是要建立一個飛濺然後使用swing調用屏幕,然後使用Java反射方法調用該方法,該方法位於另一個.java文件中,該方法會阻止該應用程序。加載完成後,處理你的啓動畫面。

檢查代碼後,您將瞭解它是如何工作的,現在按自己的方式進行自定義。

下面是一些代碼:

import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
import javax.swing.JDialog; 

/** 
* 
* @author martijn 
*/ 
public class Splash { 

    public static void splash() { 
     try { 
      final BufferedImage img = ImageIO.read(Splash.class.getResourceAsStream("/path/to/your/splash/image/splash.png")); 
      JDialog dialog = new JDialog() { 

       @Override 
       public void paint(Graphics g) { 
        g.drawImage(img, 0, 0, null); 
       } 
      }; 
      // use the same size as your image 
      dialog.setPreferredSize(new Dimension(450, 300)); 
      dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); 
      dialog.setUndecorated(true); 
      dialog.pack(); 
      dialog.setLocationRelativeTo(null); 
      dialog.setVisible(true); 
      dialog.repaint(); 
      try { 
       // Now, we are going to init the look and feel: 

       Class uim = Class.forName("javax.swing.UIManager"); 
       uim.getDeclaredMethod("setLookAndFeel", String.class).invoke(null, (String) uim.getDeclaredMethod("getSystemLookAndFeelClassName").invoke(null)); 

       // And now, we are going to invoke our loader method: 
       Class clazz = Class.forName("yourpackage.YourClass"); 
       dialog.dispose(); 
       // suppose your method is called init and is static 
       clazz.getDeclaredMethod("init").invoke(null); 
      } catch (Exception ex) { 
       ex.printStackTrace(); 
      } 
      dialog.dispose(); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 
相關問題