JavaFX任务/服务显示警报
嗨,我正在尝试实现一个简单的套接字,在局域网上传输文件/文本。当然,我使用一个JavaFX应用程序线程来显示主UI(客户端线程),并使用一个单独的线程来实现一个“接受”传入连接的JavaFX任务/服务显示警报,javafx,Javafx,嗨,我正在尝试实现一个简单的套接字,在局域网上传输文件/文本。当然,我使用一个JavaFX应用程序线程来显示主UI(客户端线程),并使用一个单独的线程来实现一个“接受”传入连接的ServerSocket(服务器线程)。加载UI时,当我试图在服务器线程中显示警报时,它不允许我这样做,因为我不再使用JavaFX应用程序线程。我试图: 在服务器线程中使用Platform.runlater()调用警报,如下所示: //inside the run() method of the Server class
ServerSocket
(服务器线程)。加载UI时,当我试图在服务器线程中显示警报时,它不允许我这样做,因为我不再使用JavaFX应用程序线程。我试图:
在服务器线程中使用Platform.runlater()
调用警报,如下所示:
//inside the run() method of the Server class, which implements Runnable
Platform.runLater(() -> {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setContentText("This shows that it works.");
alert.show();
});
//and in Main class, which defines and displays GUI
Thread server = new Thread(new Server());
server.start();
我还尝试在服务器线程中实例化一个JFXPanel
,它应该隐式实例化一个JavaFX应用程序对象(我猜)
将服务器线程转换为javafx.concurrent.Task
,并创建javafx.concurrent.Service
的新子类,该子类实例化服务器“任务
”
但到目前为止,我还不能让它工作。对于第一种和第三种方法,GUI无限期挂起,对于第二种方法,抛出一个IllegalStateException
,指示我不在JavaFX应用程序线程上
除了JavaFX应用程序线程外,是否有一种方法可以安全地在线程中显示警报
(或类似于文件选择器
的其他组件)?谢谢 第一种方法是使用Platform.runLater()
。你能给我看一下这个方法的代码吗?你贴的代码。您的错误必须在代码中的其他地方。