如何擦除JavaFX中的标签?

时间:2013-12-11 08:59:24

标签: java javafx label

在JavaFX中创建标签控件时,如何在单击按钮时删除它?以下是我创建标签的方法:

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

我尝试用以下方法覆盖它:

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

但它并没有使之前的文字消失。它只会覆盖窗格上的文本。

感谢。

2 个答案:

答案 0 :(得分:6)

执行此操作时:

Label result= new Label("");

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

每次要更改文本时,不要创建新的标签,只需创建一次Label,然后通过执行以下操作更改现有Label对象的文本:

result.setText("");

把它放在按钮的监听器中:

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

答案 1 :(得分:3)

如果要删除标签的内容,请执行以下操作:

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。如果它是一个类成员变量,那么没有最终结果就可以了。