假设我们有一个简单的Tableview,其中包含3列(A,B,C)。每列包含一些目前不重要的数据。
我想知道是否有可能只选择整个列(无论用户在何处单击该列)并检索用户选择的该列的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();
});
此代码段:
设置selectionModeProperty
的选择模式TableView
,以SelectionMode.MULTIPLE
使TableView
能够选择多行多。
将的cellSelectionEnabledProperty
选择模型设置TableView
为,true
以便TableView
能够选择单元格而不是行
附加一个监听到focusedCellProperty
所述的焦点模型的的TableView
哪个听者打印出TableColumn
当前选择的小区和选择的所有的单元中所选择的列
TableView
如果按下修改键以禁用鼠标事件,例如按下Shift +单击选择
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句