gpt4 book ai didi

java - JTable CTRL+C 事件的名称是什么?

转载 作者:行者123 更新时间:2023-11-29 06:39:26 24 4
gpt4 key购买 nike

我正在开发一个 Java 应用程序,当我在 jTable 上按 CTRL+C 时,我可以获取剪贴板并将其粘贴到 Excel 中。我想实现一个做同样事情的按钮。我怎样才能获得函数、监听器,以及我可以用来实现此目的的任何东西?

PS:我已经尝试查看其他问题,但似乎没有一个是在寻找我想要的。

最佳答案

表格复制 Action 的键是"copy":

Action copyAction = table.getActionMap().get("copy");

但我没有看到回收 Action 的有用方法:

JButton button = new JButton(copyAction);

相反,只需将表格的当前选择导出到系统剪贴板。

JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TableModel model = new DefaultTableModel(
new Object[][]{{"Some"}, {"More"}}, new Object[]{"Name"});
final JTable table = new JTable(model);
table.getSelectionModel().setSelectionInterval(0, 1);
f.add(table);
f.add(new JButton(new AbstractAction("Export") {

@Override
public void actionPerformed(ActionEvent e) {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
table.getTransferHandler().exportToClipboard(
table, clipboard, TransferHandler.COPY);
Transferable contents = clipboard.getContents(null);
}
}), BorderLayout.SOUTH);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);

附录:此变体依赖于 TableTransferable .

final DefaultTableModel model = new DefaultTableModel(
new Object[][]{
{"A1", "A2", "A3", "A4", "A5"},
{"B1", "B2", "B3", "B4", "B5"},
{"C1", "C2", "C3", "C4", "C5"},
{"D1", "D2", "D3", "D4", "D5"},
{"E1", "E2", "E3", "E4", "E5"},
{"F1", "F2", "F3", "F4", "F5"}
},
new Object[]{"1", "2", "3", "4", "5"});
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTable table = new JTable(model);
table.getSelectionModel().setSelectionInterval(0, 1);
f.add(table);
f.add(new JButton(new AbstractAction("Export") {
@Override
public void actionPerformed(ActionEvent e) {
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
cb.setContents(new TableTransferable(model), new ClipboardOwner() {
@Override
public void lostOwnership(Clipboard clipboard, Transferable contents) {
System.out.println("Clipboard lost!");
}
});
}
}), BorderLayout.SOUTH);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);

关于java - JTable CTRL+C 事件的名称是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14356859/

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