什么是JTable CTRL + C事件的名称? [英] What is the JTable CTRL+C event's name?
问题描述
PS:我已经尝试了看其他问题,但似乎没有看到
表的复制操作的关键是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}},新的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){
剪贴板剪贴板=工具包。 getDefaultToolkit()。getSystemClipboard();
table.getTransferHandler()。exportToClipboard(
表,剪贴板,TransferHandler.COPY);
可转移内容= 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 ,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){
剪贴板cb = Toolkit.getDefaultToolkit()。 getSystemClipboard();
cb.setContents(new TableTransferable(model),new ClipboardOwner(){
@Override
public void lostOwnership(剪贴板剪贴板,可传递内容){
系统。 out.println(Clipboard lost!);
}
});
}
}),BorderLayout.SOUTH);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
I am developing a Java application, and when I press CTRL+C on a jTable, I can get the clipboard and paste it in Excel. I would like to implement a button that does the same thing. How can I get the function, listener, whatever it is that I can use to achieve this?
PS: I have tried looking at other questions but none seem to be looking for what I want.
The key for the table's copy action is "copy"
:
Action copyAction = table.getActionMap().get("copy");
But I don't see a useful way to recycle the Action
:
JButton button = new JButton(copyAction);
Instead, just export the table's current selection to the system clipboard.
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);
Addendum: This variation relies on 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);
这篇关于什么是JTable CTRL + C事件的名称?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!