2016-06-24 5 views
1

私は質問があります。JavaFX Tookitを初期化する方法は?

以前のStackOverflow質問で見つけた方法でJavaFXツールキットを初期化するにはどうすればよいですか?トピックは、ここで見つけることができます:

問題:非自明のSwing GUIアプリケーションは、JavaFXのコンポーネントを実行する必要がある私は、そのスレッドから、このソリューションに同様のソリューションを使用しようとしていますJavaFX 2.1: Toolkit not initialized

。アプリケーションの起動プロセスは、依存サービスレイヤを起動した後にGUIを初期化します。

ソリューション サブクラスのJavaFX Applicationクラスと別のスレッドなどでそれを実行します。*

public class JavaFXInitializer extends Application { 
    @Override 
    public void start(Stage stage) throws Exception { 
     // JavaFX should be initialized 
     someGlobalVar.setInitialized(true); 
    } 
} 

私が持っている唯一の問題は、次のとおりです。私は

someGlobalVar.setInitialized(true); ? 

で何をしますか、私はしないでください何を記入するかを知って、いくつかのヒントをいただければ幸いです。

+3

['JFXPanel'](http://docs.oracle.com/javase/8/javafx/api/javafx/embed/swing/JFXPanel.html)を使用できませんか?インスタンス化が開始されていない場合は、インスタンス化時にツールキットを起動します。 –

+0

@ James_Dしかし、JFXPanelのものは、RAMに約10MBのRAMを使い切るということです.Nullに設定しても、GCがそれを拾うまでかなりの時間が必要です。私は10MBが大きな問題のようには聞こえないと知っていますが、私は不必要なリソースの使用が嫌いです。 – ImJustACowLol

+1

FX Toolkitを起動するので、その大部分が使用されていると思われます。 –

答えて

1

私はa (.mp3,.wav,.flac,.ogg)などのサポートについては、この回答を書いてくださいJLayerhttp://www.javazoom.net/projects.html例ではウェブで検索してください。 (.mp3,.wav.flac,.ogg)について

といくつかのより多くのあなたは(インストーラなしでダウンロードし、ZIPフォルダを開く)のzipフォルダhereをダウンロードすることができ、それらをサポートするために、いくつかの外部ライブラリを使用していますJavaZoomBasicPlayerを使用することができます。

はその後MP3_SPI1.9.3を変更.Also libフォルダに行くと音声データに視覚的に表現するために使用され、また、高速フーリエ変換(FFT)に関するクラスが含まれていることができkj_dsp以外のすべての.jarsをコピーしますMP3SPI1.9.4

で次に、あなたのプロジェクトのライブラリにこれらの.jarsを追加し、ちょうど使用:

BasicPlayer player = new BasicPlayer(); 

全体のことはService Provider Interface (SPI)メカニズムを使用しています。

これは別のスレッド上で実行されるので、心配する必要はありません。実際にはうまくいきますが、プロジェクトは少し古いです。これは良いスタートです!ドキュメントについてウェブサイトをチェックしてください。

+0

私はこの明日をさらに深く見ていきます。私が見る限り、BasicPlayerには、オーディオクリップの現在の位置を取得し、最大の位置を取得するなど、自分自身を追加する必要のある機能がありません。しかし、私は最終的にこれを行う方法をfiggure;)私は寝る。今までの助けをありがとう! – ImJustACowLol

+0

@ImJustACowLolが答えとして受け入れられましたか? :)...あなたがjava sound apiを使用しているときは、あなたが望むように低くすることができます。私はビットごとに音を制御できます。 – GOXR3PLUS

+0

私はそれを理解していますが、私はaudioprocessingの方がむしろ新しいので、今はライブラリを使用しています。 – ImJustACowLol

0
import com.sun.javafx.application.PlatformImpl; 

public class JavaFXInitializer 
{ 

     public JavaFXInitializer() 
     { 
      initFx(); 
     } 
     private synchronized static void initFx() { 
      PlatformImpl.startup(() -> { 
      }); 
     } 
} 
+2

非公開APIは使用しないでください。 –

関連する問題