1
假設我們有一個帶有3列(A,B,C)的簡單Tableview。每列包含一些目前不重要的數據。JavaFX TableView:選擇整個TableColumn並獲得索引
我想知道是否可以只選擇整個列(無論用戶在列中單擊的位置)並檢索用戶選擇的列的ID和/或索引?
例如,用戶單擊B列區域中的某處。在這種情況下,整個列應該被標記並且應該返回索引2。
任何幫助,將不勝感激;)
假設我們有一個帶有3列(A,B,C)的簡單Tableview。每列包含一些目前不重要的數據。JavaFX TableView:選擇整個TableColumn並獲得索引
我想知道是否可以只選擇整個列(無論用戶在列中單擊的位置)並檢索用戶選擇的列的ID和/或索引?
例如,用戶單擊B列區域中的某處。在這種情況下,整個列應該被標記並且應該返回索引2。
任何幫助,將不勝感激;)
你可以嘗試這樣的事情:
table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
table.getSelectionModel().setCellSelectionEnabled(true);
table.addEventFilter(MouseEvent.MOUSE_PRESSED, (event) -> {
if(event.isShortcutDown() || event.isShiftDown())
event.consume();
});
table.getFocusModel().focusedCellProperty().addListener((obs, oldVal, newVal) -> {
if(newVal.getTableColumn() != null){
table.getSelectionModel().selectRange(0, newVal.getTableColumn(), table.getItems().size(), newVal.getTableColumn());
System.out.println("Selected TableColumn: "+ newVal.getTableColumn().getText());
System.out.println("Selected column index: "+ newVal.getColumn());
}
});
table.addEventFilter(MouseEvent.MOUSE_PRESSED, (event) -> {
if(event.isShortcutDown() || event.isShiftDown())
event.consume();
});
這個片斷:
設置TableView
的選擇模型的selectionModeProperty
到SelectionMode.MULTIPLE
以使TableView
能夠選擇多行。
設置TableView
向true
的選擇模型,使TableView
能夠選擇單元格,而不是行
的cellSelectionEnabledProperty
附加一個監聽器TableView
的focus model的focusedCellProperty
其監聽打印TableColumn
,並選擇所選列中的所有單元格
如果修改鍵被按下,則在TableView
上消耗鼠標事件ble例如Shift +點擊選擇
哇......工作正常。你爲我節省了一整天的時間。只有一個問題:我將如何實現多列選擇。例如,當我點擊列C時選擇列A? – Tobias