2017-04-06 67 views
0

我有TableViewCheckBoxTableCell列。CheckBoxTableCell:單擊時更改光標

我想抓住單元格的選擇並將光標更改爲Cursor.WAIT

單擊單元格會導致一些數據庫查詢發生,這將需要幾秒鐘。我想通知用戶正在發生某些事情,並且應用程序不會死亡。

@FXML 
private TableColumn<IOrigin, Boolean> cActive; 

@Override 
public void initialize(final URL location, final ResourceBundle resources) { 
cActive.setCellFactory(tc -> new CheckBoxTableCell<>()); 
[..] 

} 

上偵聽CheckBoxTableCell#selectedProperty()不起作用,它不會觸發任何更改事件。

列單元格通過fxml綁定到bean屬性。

<TableColumn text="Active" editable="true" fx:id="cActive"> 
<cellValueFactory> 
<PropertyValueFactory property="active" /> 
/cellValueFactory> 
</TableColumn> 
+0

'updateItem(...)'與選擇有什麼關係? –

+0

沒什麼,但是這個我可以分別改變光標前後的變化。但是當這個方法被調用時,所有的工作都已經完成了。 – kerner1000

+0

http://stackoverflow.com/questions/43274939/javafx-how-do-i-trigger-an-event-if-someone-check-a-checkbox-in-tableview – Sedrick

回答

0

With the cells show CheckBox in TableView:

  • 注意,CheckBoxTableCell呈現複選框「活」,這意味着該複選框始終是互動性和可被用戶直接切換。
  • 這意味着單元格不必進入編輯狀態(通常由用戶雙擊單元格)。
  • 這樣做的副作用是不會調用通常的編輯回調(如編輯提交)。
  • 如果想要收到更改通知,建議直接觀察CheckBox操作的布爾屬性。
+0

我明白了。但是觀察「被操縱的布爾屬性..」意味着觀察UI任務的模型對象。這有點臭,需要進行大量的重構,因此模型可以使用「場景」對象。 – kerner1000