python tableview双击排序_为TableView的行实现双击事件

背景说明

当我们使用一个表格来展示信息时,存在一个场景——查看或者编辑指定行的数据。

一般我们有以下几种操作方式:

直接在表格行尾添加一个编辑按钮

行首增加一个checkbox,选中后再点击表格上方或者下方的查看/编辑按钮

双击表格中的一行来响应事件

我这里简单的介绍第三种方式的实现方法。

双击事件

我假设你已经知道如何创建一个TableView了,在我们需要为添加列时,我们要对TableColumn的CellFactory进行设置。

我专门写一个方法来产生TableColumn:

private TableColumn getColumn(String columnName, String propertyName, int width, int maxWidth) {

TableColumn 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, TableCell> {

@Override

public TableCell call(TableColumn param) {

TextFieldTableCell cell = new TextFieldTableCell<>();

cell.setOnMouseClicked((MouseEvent t) -> {

if (t.getClickCount() == 2) {

view();

}

});

//cell.setContextMenu(taskContextMenu);

return cell;

}

}

整个实现的核心就在于重点就在于实现Callback, TableCell>然后返回JavaFX API自带的TextFieldTableCell。并在call()方法中,为cell增加了双击事件的处理。在我的实现中,双击时会调用view()方法来实现查看的逻辑。

在这里你可以做你想做的其他效果,比如为表格设置上下文菜单,右键时显示查看/删除等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值