在JavaFX中创建标签控件时,如何在单击按钮时删除它?以下是我创建标签的方法:
Label result= new Label("The result is ...");
root.add(result, 0, 1);
我尝试用以下方法覆盖它:
Label result= new Label("");
root.add(result, 0, 1);
但它并没有使之前的文字消失。它只会覆盖窗格上的文本。
感谢。
答案 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。如果它是一个类成员变量,那么没有最终结果就可以了。