Swing/SplashScreen のバックアップの現在との差分(No.11)
TITLE:JWindowを使ったSplash Screenの表示
JWindowを使ったSplash Screenの表示
編集者:Terai Atsuhiro~
作成日:2003-09-25
更新日:2024-02-02 (金) 11:52:27
概要
JWindow
を使って、Splash Screen
を表示します。以下のサンプルコードは、%JAVA_HOME%/demo/jfc/SwingSet2/src/SwingSet2.java
から引用改変したものです。
Screenshot
Advertisement
概要
JWindowを使って、Splash Screenを表示します。起動画面、Splash Windowといった呼び方もあるようです。 以下のサンプルコードは、%JAVA_HOME%/demo/jfc/SwingSet2/src/SwingSet2.java から引用改変したものです。サンプルコード
#spanend
#spanadd
private JWindow splashScreen;
#spanend
#spanadd
private JLabel splashLabel;
#spanend
#spanadd
public MainPanel() {
#spanend
super();
createSplashScreen(SPLASH_PATH);
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
showSplashScreen();
}
});
// 実行時間の長い処理など
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
System.out.println(e);
}
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
showPanel();
hideSplash();
}
});
#spanadd
}
#spanend
#spandel
#screenshot
#spanend
#spanadd
public void createSplashScreen(String path) {
#spanend
ImageIcon img = new ImageIcon(getClass().getResource(path));
splashLabel = new JLabel(img);
splashScreen = new JWindow(getFrame());
splashScreen.getContentPane().add(splashLabel);
splashScreen.pack();
splashScreen.setLocationRelativeTo(null);
#spanadd
}
#spanend
#spandel
**サンプルコード [#raad4e3d]
#spanend
private JWindow splashScreen;
private JLabel splashLabel;
public void createSplashScreen(String path) {
ImageIcon img = new ImageIcon(getClass().getResource(path));
splashLabel = new JLabel(img);
splashScreen = new JWindow(getFrame());
splashScreen.getContentPane().add(splashLabel);
splashScreen.pack();
splashScreen.setLocationRelativeTo(null);
}
public void showSplashScreen() {
splashScreen.show();
}
public void hideSplash() {
splashScreen.setVisible(false);
splashScreen = null;
splashLabel = null;
}
//コンストラクタ
public HogeHoge() {
createSplashScreen("/resources/images/splash.png");
SwingUtilities.invokeLater(new Runnable() {
public void run() {
showSplashScreen();
}
});
//initializePanel();
//といった初期化などの重い処理の代わりに、このサンプルではsleep
try{
Thread.sleep(3000);
}catch(InterruptedException e) {
System.out.println(e);
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
showPanel();
hideSplash();
}
});
}
#spanadd
public void showSplashScreen() {
#spanend
splashScreen.setVisible(true);
#spanadd
}
#spanend
-&jnlp;
-&jar;
-&zip;
#spanadd
public void hideSplash() {
#spanend
splashScreen.setVisible(false);
splashScreen = null;
splashLabel = null;
#spanadd
}
#spanend
#spandel
**解説 [#j7466f5a]
#spanend
#spandel
スプラッシュ・スクリーンのスレッド処理をSwingUtilities.invokeLaterメソッドを使って行っています。使用する画像は事前に用意しておいてください。上記のサンプルコードでは、クラスパスの通った場所にある ''/resources/images/splash.png'' を読み込んで表示するようになっています。
#spanend
#spanadd
public JFrame getFrame() {
#spanend
return frame;
#spanadd
}
#spanend
#spandel
サンプルの画像は、[[n-Gen>http://www.n-generate.com/download.html]]を使って生成しています。
#spanend
#spanadd
public void showPanel() {
#spanend
this.setPreferredSize(new Dimension(300, 200));
frame.getContentPane().add(this);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
#spanadd
}
#spanend
#spanadd
View in GitHub: Java, Kotlin解説
上記のサンプルコードでは、クラスパスの通った場所にある/resources/images/splash.png
を読み込んでスプラッシュ・スクリーン(起動画面)を表示しています。JWindow
の表示、非表示は、イベントディスパッチスレッド(EDT
)で行われるように、Runnable
を作成しEventQueue.invokeLater()
メソッドで実行しています。
コメント
- -
-
Java SE 6
ではSplashScreenクラスが追加され、起動時にスプラッシュ・スクリーンとして表示する画像をコマンドラインやmanifest.mf
で指定するなどの方法で使用可能になった