2017-05-26 3 views
2

OS X SierraでSWTアプリケーションを作成しましたが、起動するのに少し時間がかかるので、スプラッシュ画面を追加して、の何かがであることを明確にしたいと思います。 SplashScreen-Image:property in the Java Manifest fileはこれに完全に適しているようです。これは、スプラッシュ画面イメージが表示される範囲で機能しますが、アプリケーションメインウィンドウが最後に表示された後にイメージが消えないという問題があります。ディスパッチループが始まる直前に、追加しようとしましたが、まだスプラッシュイメージは表示されたままです。 the SplashScreen classOracle demo codeclass documentationも、私が何をすべきかについての有用なガイダンス(IMHO)を提供していません。SWTでSplashScreen-Imageを使用すると、Javaのスプラッシュ画面が消えるようにするにはどうすればよいですか?

どのようにの場合、スプラッシュイメージは破棄または削除されるはずですか?私は何が間違っていますか?

+0

これは[この質問](https://stackoverflow.com/q/21022788/2670892)と非常によく似ています。 –

+0

@ greg-449そうです。それは全く同じ問題です。私は投稿する前に検索したが、明らかにそれはひどくやった。謝罪いたします。それを見つけていただきありがとうございます - 他の問題のディスカッションを読むことは非常に役に立ちます。 – mhucka

+0

これは複製としてクローズする必要がありますか? – mhucka

答えて

1

Iは、VMの引数で定義されたスプラッシュ画面を使用するアプリケーションがあります:最初のJFrameが表示されるように設定されているときにスプラッシュ画面が自動的に消える

javaw -splash:splash.png ...other params here... 

を。

これはおそらくあなたの正確な問題の解決策ではありませんが、おそらくこのアプローチを採用して機能させることができます。

あなたの解決策としては、OS X Sierraのスプラッシュ画面、マニフェストファイルで定義されたスプラッシュ画面はありませんが、splash.close();というこの行が実際に実行されることは確かですか?このコードをステップバイステップでデバッグしましたか?

+0

私は 'splash.close()'の呼び出しが実行されていましたが、それはそうではないことが判明しました。コールが呼び出される直前のコードは、私が 'splash.close ) ' - 私はそれがあったに違いないと仮定した。これで 'splash.close()'が実際に呼び出されるように修正しました。アプリケーション全体がハングアップすることが判明しました。現時点では、SplashScreen AWTクラスはSWTでは動作しません。 – mhucka

+0

'-splash'コマンドライン引数を使用すると、スプラッシュ画面のPNGイメージも同じように表示されます。表示されますが、決して消えません。なぜ私の行動が違うのか分かりませんが、OS Xの違いか、SWTを使用しているという事実か、まだ特定されていない他の要素のいずれかになります。 – mhucka

+0

デコレーションされていないJFrameからスプラッシュ画面を作成し、初期化の前に表示してから初期化してから閉じることができますが、数秒後には表示されますが、また、JVMにバグを報告したり、他のバージョンのJVMを試してみることもできます。 –

関連する問題