JavaFX任务/服务显示警报

JavaFX任务/服务显示警报,javafx,Javafx,嗨,我正在尝试实现一个简单的套接字,在局域网上传输文件/文本。当然,我使用一个JavaFX应用程序线程来显示主UI(客户端线程),并使用一个单独的线程来实现一个“接受”传入连接的ServerSocket(服务器线程)。加载UI时,当我试图在服务器线程中显示警报时,它不允许我这样做,因为我不再使用JavaFX应用程序线程。我试图: 在服务器线程中使用Platform.runlater()调用警报,如下所示: //inside the run() method of the Server class

嗨,我正在尝试实现一个简单的套接字,在局域网上传输文件/文本。当然,我使用一个JavaFX应用程序线程来显示主UI(客户端线程),并使用一个单独的线程来实现一个“接受”传入连接的
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()
    。你能给我看一下这个方法的代码吗?你贴的代码。您的错误必须在代码中的其他地方。