gpt4 book ai didi

tableview - javafx,TableView:检测对单元格的双击

转载 作者:行者123 更新时间:2023-12-03 13:19:36 28 4
gpt4 key购买 nike

给定一个TableView,我需要检测单元格上的双击。

tableView.setOnMouseClicked(new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent event)
{
if(event.getClickCount()>1)
{
System.out.println("double clicked!");
}
}
});

如何确定在其上单击鼠标的单元格?

最佳答案

代码示例。
运行official tableview tutorial“示例12-11:单元格编辑的替代解决方案”
替换以下内容:

table.setEditable(false);
Callback<TableColumn, TableCell> cellFactory =
new Callback<TableColumn, TableCell>() {
public TableCell call(TableColumn p) {
TableCell cell = new TableCell<Person, String>() {
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setText(empty ? null : getString());
setGraphic(null);
}

private String getString() {
return getItem() == null ? "" : getItem().toString();
}
};

cell.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.getClickCount() > 1) {
System.out.println("double clicked!");
TableCell c = (TableCell) event.getSource();
System.out.println("Cell text: " + c.getText());
}
}
});
return cell;
}
};

由于您的单元格不可编辑,因此无需 EditingCell。单元格工厂用于单元格渲染。因此,可以使用单元格的setGraphics()方法放置默认 Labeled以外的任何节点/控件。 IMO,您不能直接访问默认单元格,因此您应该定义自己的单元格工厂,以便能够在单元格上放置事件过滤器。

关于tableview - javafx,TableView:检测对单元格的双击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12499269/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com