我环顾四周并注意到这篇文章中给出的回复: Detect doubleclick on row of TableView JavaFX
但是,这篇文章使用了 lambda 表达式,我不确定如何将它们转换为在 JavaFX 2 代码中使用。我的主要目标是能够单击一行,然后弹出一个新窗口,其中包含该行中存储的信息。只要我能让回调工作,我就能从那里得到它!任何建议将不胜感激。
table.setRowFactory( tv -> {
TableRow<MyType> row = new TableRow<>();
row.setOnMouseClicked(event -> {
if (event.getClickCount() == 2 && (! row.isEmpty()) ) {
MyType rowData = row.getItem();
System.out.println(rowData);
}
});
return row ;
});
最佳答案
给你:
table.setRowFactory(tv -> {
TableRow<MyType> row = new TableRow<>();
row.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.getClickCount() == 2 && (!row.isEmpty())) {
MyType rowData = row.getItem();
System.out.println(rowData);
}
}
});
return row;
});
根据您的 IDE,当光标位于 setOnMouseClicked()
的括号中时,您通常可以按 ctrl + space,它会告诉您需要执行什么操作。然后您可以输入 new EventHandler (或任何需要的内容),按 Enter 键,大多数 IDE 会自动为您完成完整的方法。然后你就可以粘贴内脏了。
关于tableview - 检测 TableView JavaFX 2 ROW 上的双击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42219086/