2017-11-09 7 views
-1

javafx-d3ライブラリを統合して、Javaデスクトップアプリケーションでd3.jsビジュアルを使用しようとしています。私はこのようなコードを使用していますjava fxスレッドへのアクセス方法

Runnable runnable = new Runnable() 
{ 
    @Override 
     public void run() 
     { 
      runDemoSuite(demoMenuBox, demoPreferenceBox); 
     } 
}; 

Platform.runLater(runnable); 
browser = new JavaFxD3Browser(runnable, true); 

"runnable"は "JavaFX Application Thread"ではないという問題があります。私はそれを "プラットフォーム"で実行すると "JavaFXアプリケーションスレッド"となり、他のスレッドは通常のスレッドになります。このスレッドへのアクセス権を取得してJavaFxD3Browser関数に渡すにはどうすればよいですか。

答えて

1

「実行可能」は、「JavaFXのアプリケーションスレッド」

Runnableないコードのいくつかの部分の抽象化を可能にするインターフェースです。それは "スレッド"にすることはできません。

あなたの場合には、使用、コードの任意の部分をラップしたいので、RunnableまたはThreadを使用するかどうかは明らかではない。

Runnable runnable =() -> { 
    Platform.runLater(() -> { 
     // code here will run on the JavaFX Application Thread 
    }; 
}; 

かかわらず、呼び出し元のスレッドのrunnableオブジェクトが実行されますJavaFXアプリケーションスレッドでラップされたコード。私がアクセスしようとすると

public class TestApp extends Application { 

    private Thread fxThread; 

    @Override 
    public void start(Stage stage) throws Exception { 

     Platform.runLater(() -> { 
      // fxThread is the JavaFX Application Thread after this call 
      fxThread = Thread.currentThread(); 
     }); 
    } 
} 
+0

:私はこのスレッド

へのアクセスを得ることができますが、以下のように名前「JavaFXのアプリケーションスレッドを」持っているThreadオブジェクトを取得するにはどうすればよい

FxThreadは関数の外部で、nullです。 – user1631306

関連する問題