2017-06-06 142 views
2

我有TableView,我想在細胞失去焦點時做點什麼。 我在此TableView上啓用了單元格選擇,它不偵聽丟失的單元格焦點。我試過這種方式:Javafx:TableCell焦點丟失

table.getFocusModel().focusedCellProperty().addListener((observable, oldValue, newValue) -> { 
     if (newValue != null) { 
      //doSomething 
     } 
     // else doSomethingElse doesn't work 
}); 

簡單地說,當我取消選擇(Ctrl +單擊)單元格時它不聽。我錯了什麼或者我怎麼能聽到TableCell丟失的焦點?

+1

它是細胞*焦點*您感興趣,或細胞*選擇*? –

+0

@James_D我對單元格選擇感興趣,以某種方式傾聽selectedCell,但選擇模型沒有'selectedCellProperty'。如果我能以某種方式聽取選定的單元格(不重點,也許我在問題中錯誤),那將是完美的。你有什麼想法怎麼做? – Sunflame

回答

0

我使用這個:

TABLEVIEW.focusedProperty().addListener(new ChangeListener<Boolean>() { 
    @Override 
    public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue) { 
     if (newPropertyValue) { 
      System.out.println("on focus"); 
     } else { 
      System.out.println("out focus"); 
     } 
    } 
}); 

它只能如果選擇其他可選元素(不工作在一個窗格e.g點擊)。

+1

當然,只是關注整個表格,而不是單個單元格。例如。如果焦點(或選擇)從一個單元移動到另一個單元,則根本不會調用監聽器。 –

+0

我也嘗試過這種方式,但是當我想取消選擇單元格時,'/ doSomething'部分我不想使用/取消某個按鈕,這取決於單元格是否被聚焦。所以很遺憾,這不會幫助我:( – Sunflame

+0

是的,沒錯,只有當你選擇了表格,然後取消選擇 – Developer66