为TableView的行实现双击事件
2015-10-16 08:30
435 查看
背景说明
当我们使用一个表格来展示信息时,存在一个场景——查看或者编辑指定行的数据。一般我们有以下几种操作方式:
直接在表格行尾添加一个编辑按钮
行首增加一个checkbox,选中后再点击表格上方或者下方的查看/编辑按钮
双击表格中的一行来响应事件
我这里简单的介绍第三种方式的实现方法。
双击事件
我假设你已经知道如何创建一个TableView了,在我们需要为添加列时,我们要对TableColumn的CellFactory进行设置。我专门写一个方法来产生TableColumn:
private TableColumn<Task, String> getColumn(String columnName, String propertyName, int width, int maxWidth) { TableColumn<Task, String> tableColumn = new TableColumn<>(columnName); tableColumn.setCellFactory(new TaskCellFactory()); tableColumn.setCellValueFactory(new PropertyValueFactory<>(propertyName)); tableColumn.setMinWidth(width); tableColumn.setPrefWidth(width); tableColumn.setMaxWidth(maxWidth); return tableColumn; }
然后通过以下代码对产生的TableColumn进行使用:
TableColumn c = getColumn("任务标题", "taskName", 300, 1000);
在getColumn()这个方法中,我通过
tableColumn.setCellFactory(new TaskCellFactory());设置了CellFactory。TaskCellFactory的内容如下:
private class TaskCellFactory implements Callback<TableColumn<Task, String>, TableCell<Task, String>> { @Override public TableCell<Task, String> call(TableColumn<Task, String> param) { TextFieldTableCell<Task, String> cell = new TextFieldTableCell<>(); cell.setOnMouseClicked((MouseEvent t) -> { if (t.getClickCount() == 2) { view(); } }); //cell.setContextMenu(taskContextMenu); return cell; } }
整个实现的核心就在于重点就在于实现
Callback<TableColumn<Task, String>, TableCell<Task, String>>然后返回JavaFX API自带的
TextFieldTableCell。并在call()方法中,为cell增加了双击事件的处理。在我的实现中,双击时会调用view()方法来实现查看的逻辑。
在这里你可以做你想做的其他效果,比如为表格设置上下文菜单,右键时显示查看/删除等。
http://www.alanzeng.cn/2015/10/tableview-double-click/
相关文章推荐
- 表格标签table深入了解
- table 隔列(行)换色效果让表格结构更清淅
- table高级应用把表格进行到底(必看)
- VB返回记录集结果到HTML表格的方法
- 表格高级使用技巧_把表格进行到底(必看)
- C#实现动态生成表格的方法
- JS实现控制表格行文本对齐的方法
- JS动态显示表格上下frame的方法
- JS实现两表格里数据来回转移的方法
- javascript表格随机排序代码
- JavaScript 自动在表格前面增加序号
- javascript实现通过表格绘制颜色填充矩形的方法
- JavaScript简单表格编辑功能实现方法
- JavaScript实现表格快速变色效果代码
- js动态修改表格行colspan列跨度的方法
- JS显示表格内指定行html代码的方法
- JS动态修改表格cellPadding和cellSpacing的方法
- javascript实现可全选、反选及删除表格的方法
- JavaScript实现表格点击排序的方法
- jQuery表格列宽可拖拽改变且兼容firfox