ホットキーまたはDnDを介してコピー、カット、ペーストのアクションを許可するJTable
withがあります。の外側に3 ( copy-cut-paste ) があり、 (など)で同様のアクションを呼び出す必要があります。TransferHandler
JButtons
JTable
JTable's TransferHandler
canImport()
どうやってやるの?
ホットキーまたはDnDを介してコピー、カット、ペーストのアクションを許可するJTable
withがあります。の外側に3 ( copy-cut-paste ) があり、 (など)で同様のアクションを呼び出す必要があります。TransferHandler
JButtons
JTable
JTable's TransferHandler
canImport()
どうやってやるの?
最近の質問/回答と基本的に非常によく似たアプローチ: テーブルのコピー アクションをその actionMap で見つけ、それをオリジナルに委譲するカスタム アクションにラップし、ボタンでカスタム アクションを使用します。
table.setDragEnabled(true);
final Action copy = table.getActionMap().get("copy");
Action copyWithButton = new AbstractAction("copy") {
@Override
public void actionPerformed(ActionEvent e) {
copy.actionPerformed(
new ActionEvent(table, e.getID(), e.getActionCommand()));
}
};
frame.add(new JScrollPane(table));
frame.add(new JButton(copyWithButton), BorderLayout.NORTH);
frame.add(new JScrollPane(new JTextArea(5, 20)), BorderLayout.SOUTH);
みんなありがとう、でも答えを待っている間に自分で答えを見つけた:
private void onAction(String actionStr) {
Action action = table.getActionMap().get(actionStr);
ActionEvent newAE = new ActionEvent(table, ActionEvent.ACTION_PERFOMED, actionStr);
action.actionPerfomed(newAE);
}
private void decorateButtons() {
copyButton.addActionListener(new ActionListener() {
public void actionPerfomed(ActionEvent ae) {
onAction("copy");
}
});
cutButton.addActionListener(new ActionListener() {
public void actionPerfomed(ActionEvent ae) {
onAction("cut");
}
});
pasteButton.addActionListener(new ActionListener() {
public void actionPerfomed(ActionEvent ae) {
onAction("paste");
}
});
}