我有一个简单的 JavaFX 应用程序,它允许用户查询数据库并查看表中的数据。
我想让用户能够单击表格单元格并使用标准剪贴板击键将文本从该单元格复制到剪贴板: ctrl-c 用于 Win/Linux 或 cmd-c 用于 Mac。仅供引用,文本输入控件默认支持基本复制/粘贴。
我正在使用标准的 javafx.scene.control.TableView 类。有没有一种简单的方法来启用单元格复制?我做了一些搜索,我看到其他人创建了自定义菜单命令...我不想创建自定义菜单,我只想使用基本的键盘副本来处理单个单元格。
我正在使用单选模式,但如果需要,我可以更改为其他内容:
TableView<Document> tableView = new TableView<Document>();
tableView.getSelectionModel().setCellSelectionEnabled(true);
tableView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
最佳答案
您只需要在场景中创建一个监听器,例如:
scene.getAccelerators()
.put(new KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_ANY), new Runnable() {
@Override
public void run() {
int row = table.getSelectionModel().getSelectedIndex();
DataRow tmp = table.getItems().get(row);
final Clipboard clipboard = Clipboard.getSystemClipboard();
final ClipboardContent content = new ClipboardContent();
if(table.getSelectionModel().isSelected(row, numColumn)){
System.out.println(tmp.getNumSlices());
content.putString(tmp.getNumSlices().toString());
}
else{
System.out.println(tmp.getSelected());
content.putString(tmp.getSelected());
}
clipboard.setContent(content);
}
});
有关完整示例,您可以在 gist 下载它。 .
关于javafx - 允许用户从 TableView 复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170119/