JavaFX警报信息不再显示ContentText';我不知道为什么

JavaFX警报信息不再显示ContentText';我不知道为什么,javafx,alert,Javafx,Alert,我有一个运行在Windows10上的JavaFX小应用程序,我在应用程序内部做了很多更改,现在我面临的问题是,我的信息框显示了标题和图片,但框内没有编写文本 我在我的应用程序的一部分中调用此选项: infoBox("Karte wurde gelesen... bitte warten ", "Information-NFC", "Information-NFC!"); 下面是函数本身: public void infoBox(S

我有一个运行在Windows10上的JavaFX小应用程序,我在应用程序内部做了很多更改,现在我面临的问题是,我的信息框显示了标题和图片,但框内没有编写文本

我在我的应用程序的一部分中调用此选项:

 infoBox("Karte wurde gelesen... bitte warten ", "Information-NFC", "Information-NFC!");
下面是函数本身:

public  void infoBox(String infoMessage, String titleBar, String headerMessage) 
{
   
      
    Alert alert = new Alert(AlertType.INFORMATION);
    alert.setResizable(true);
    alert.getDialogPane().setPrefSize(480, 320);

    alert.getDialogPane().setStyle("-fx-text-fill: red;-fx-font-size: 15px; -fx-font: 10px Tahoma; ");

    alert.setTitle(titleBar);
    alert.setHeaderText(headerMessage);
   alert.setContentText(infoMessage);



    System.out.println(infoMessage+"here");
        //Logo für Programm Fenster
//////////// Logo ProgrammFesnter end
Image img2 = new Image(getClass().getResourceAsStream("logo.PNG"));
Stage dialogStage = (Stage) alert.getDialogPane().getScene().getWindow();
dialogStage.getIcons().add(img2);
    alert.show();
   try {
       Thread.sleep(8000);
   } catch (InterruptedException ex) {
       System.out.println(ex);
   }
    alert.close();
}
我可以在日志窗口中看到变量“infoMessage”已设置,但警报框本身为空。 我不知道为什么。 你们当中有人以前有过这个问题吗

除了这个小盒子,一切都很好

感谢大家,祝你们假期愉快


Stev最有可能的问题是
线程睡眠(8000)
调用。这会使JavaFX应用程序线程处于休眠状态,从而防止用户与UI交互,并防止任何渲染“脉冲”被调度。换句话说,您的应用程序在这8秒钟内没有响应

如果要延迟FX线程上的操作,则应使用动画API。而且,由于您似乎希望在允许代码继续之前等待警报关闭,因此还应使用
onShown
属性和
对话框的
showAndWait()方法。例如:

Alert alert = ...;
// configure alert

PauseTransition closeDelay = new PauseTransition(Duration.seconds(8));
closeDelay.setOnFinished(e -> alert.close());

alert.setOnShown(e -> closeDelay.playFromStart());
alert.showAndWait();

最有可能的问题是
线程.sleep(8000)
调用。这会使JavaFX应用程序线程处于休眠状态,从而防止用户与UI交互,并防止任何渲染“脉冲”被调度。换句话说,您的应用程序在这8秒钟内没有响应

如果要延迟FX线程上的操作,则应使用动画API。而且,由于您似乎希望在允许代码继续之前等待警报关闭,因此还应使用
onShown
属性和
对话框的
showAndWait()方法。例如:

Alert alert = ...;
// configure alert

PauseTransition closeDelay = new PauseTransition(Duration.seconds(8));
closeDelay.setOnFinished(e -> alert.close());

alert.setOnShown(e -> closeDelay.playFromStart());
alert.showAndWait();

工作很有魅力!非常感谢你!如果有人遇到同样的问题,我必须在代码中更改的唯一一件事是:新的PauseTransition(javafx.util.Duration.seconds(8))@是的,它是
javafx.util.Duration
类,而不是
java.time.Duration
类。但是,如果不在类中的其他位置使用后者,则可以导入前者。我在应用程序中使用java.time.duration库来计算时差等,而.seconds方法无效。在java.time.Duration库中,我从“外部”读取数据,所以我需要直接访问它。没关系,学会了如何直接使用图书馆并解决了我的问题:)再次感谢!!工作很有魅力!非常感谢你!如果有人遇到同样的问题,我必须在代码中更改的唯一一件事是:新的PauseTransition(javafx.util.Duration.seconds(8))@是的,它是
javafx.util.Duration
类,而不是
java.time.Duration
类。但是,如果不在类中的其他位置使用后者,则可以导入前者。我在应用程序中使用java.time.duration库来计算时差等,而.seconds方法无效。在java.time.Duration库中,我从“外部”读取数据,所以我需要直接访问它。没关系,学会了如何直接使用图书馆并解决了我的问题:)再次感谢!!