如何在JavaFX中擦除标签



当您在JavaFX中创建标签控件时,如何在按钮点击事件中擦除它?以下是我如何创建我的标签:

        Label result= new Label("The result is ...");
        root.add(result, 0, 1);

我试着用覆盖它

        Label result= new Label("");
        root.add(result, 0, 1);

但这并没有让前面的文字消失。它只覆盖窗格上的文本。

谢谢。

执行此操作时:

Label result= new Label("");

您正在创建一个新的Label对象。result只是一个指向类型为Label的对象的变量。每次使用关键字new时,都会在堆中创建一个新对象,但不会删除旧对象,这就是为什么它会覆盖窗格上的文本。

与其每次要更改文本时都创建一个新的Label,不如只创建一次Label,并通过以下操作更改现有Label对象的文本:

result.setText("");

把这个放在按钮的监听器里:

button.setOnAction(new EventHandler<ActionEvent>() {
    @Override public void handle(ActionEvent event) {
        result.setText("");
    }
});

如果您想擦除标签的内容,请执行:

final Label result = ...
root.add(result, 0, 1);
button.setOnAction(new EventHandler<ActionEvent>() {
    @Override public void handle(ActionEvent event) {
        result.setText("");
    }
});

您也可以移除标签;将setText()调用替换为:

        result.getParent().getChildren().remove(result);

您可以稍后再次添加。

在任何情况下,如果在方法内部声明,它必须是final。如果它是一个类成员变量,那么没有final也是可以的。

最新更新