我试图通过集成javafx-d3库在我的java桌面应用程序中使用d3.js visuals。我正在使用像这样的代码
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函数。
答案 0 :(得分:1)
"可运行"不是" JavaFX应用程序线程"
Runnable
是一个允许抽象某些代码的接口。它不能是一个线程"。
目前尚不清楚您是否要使用Runnable
或Thread
,因此如果您想要包装任意一段代码,请使用:
Runnable runnable = () -> {
Platform.runLater(() -> {
// code here will run on the JavaFX Application Thread
};
};
runnable
对象,无论其调用者线程如何,都将在JavaFX应用程序线程上执行其包装代码。
如何获取此线程的访问权限
您可以获取名称为" JavaFX Application Thread"的Thread
对象。如下:
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();
});
}
}