2013-12-11 35 views
1

當您在JavaFX中創建標籤控件時,如何在點擊按鈕事件期間將其刪除?這裏是我創造了我的標籤:如何擦除JavaFX中的標籤?

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

我試圖覆蓋它:

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

但它不會使以前的文字消失。它只覆蓋窗格上的文本。

謝謝。

回答

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(""); 
    } 
}); 
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); 

您可以稍後再添加它。

在任何情況下,如果在方法中聲明,它必須是最終的。如果它是一個類成員變量,那麼沒有最終結果是可以的。