java - 我的标签设置了任何文本,但我在屏幕上看不到它,但可以从控制台看到它

标签 java javafx label

我正在使用标签。但是当我使用 label.settext("Something") 时。它在后台工作,这意味着它设置了字符串,但不会在屏幕上显示它。你可以问我你是怎么知道这个的?我使用 System.out.println(label.gettext()) 在控制台上检查了它。它给出了正确的输出。但关卡并未显示“Something”。

serialPort.addEventListener((SerialPortEvent serialPortEvent) -> {
        try{
            System.out.println("Your selected text for label : "+objectname);
                objectname="Nothing";
            label2.setText(objectname);
            System.out.println("Label gettext : "+label2.getText());    
        }catch(Exception e){
            e.printStackTrace();
        }
}

它给出了 -> java.lang.IllegalStateException:不在 FX 应用程序线程上;当前线程 = EventThread COM5

最佳答案

对任何 JavaFX Node 的每次更改都必须在 FX 应用程序线程中调用。提供的异常(exception)解释了这一点。我假设 SerialPortEvent 在单独的线程中调用,这就是您收到异常的原因。要修复在 Platform.runLater() 中设置 Label 文本。

代码:

serialPort.addEventListener((SerialPortEvent serialPortEvent) -> {
    try {
        System.out.println("Your selected text for label : " + objectname);
        objectname = "Nothing";
        Platform.runLater(() -> {
            label2.setText(objectname);
        });
        System.out.println("Label gettext : " + label2.getText());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

关于java - 我的标签设置了任何文本,但我在屏幕上看不到它,但可以从控制台看到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45098340/

相关文章:

javascript - this.form.name 在 Chrome 中不起作用

c - 内联汇编 --> 错误 : internal_relocation (type: OFFSET_IMM) not fixed up

java - Java 7 中多异常捕获的使用

java - Gradle 项目的简单版本控制

java - Whatsapp 聊天中的表情符号

按键时 Javafx imageView 旋转

java - 如果语句中包含的方法内部发生错误,则返回 while 循环条件

JavaFX:从 ProgressIndicator 中删除百分比

java - JFXTextField 不适用于 JxBrowser

apache-flex - 设置 spark.components.Label 的文本颜色