当您在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也是可以的。