1

ホットキーまたはDnDを介してコピー、カット、ペーストのアクションを許可するJTablewithがあります。の外側に3 ( copy-cut-paste ) があり、 (など)で同様のアクションを呼び出す必要があります。TransferHandlerJButtonsJTableJTable's TransferHandlercanImport()

どうやってやるの?

4

2 に答える 2

2

最近の質問/回答と基本的に非常によく似たアプローチ: テーブルのコピー アクションをその 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);
于 2013-07-11T09:49:26.883 に答える
2

みんなありがとう、でも答えを待っている間に自分で答えを見つけた:

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");
        }
    });
}
于 2013-07-11T10:00:37.543 に答える