Summary
JTableの全選択や選択された行のコピーをJButtonなどの別コンポーネントから行います。
Screenshot

Advertisement
Source Code Examples
private final JTable table = new JTable(model);
private final Action copyAction = new AbstractAction("copy") {
@Override public void actionPerformed(ActionEvent e) {
e.setSource(table);
table.getActionMap().get("copy").actionPerformed(e);
}
};
View in GitHub: Java, KotlinDescription
上記のサンプルでは、JButtonやJMenuItemがクリックされたときに以下のようにしてフォーカスのないJTableの全選択とコピーを行っています。
AWTEvent#setSource(Object)メソッドでイベントをJTableに再転送Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JMenuItem cannot be cast to javax.swing.JTableなどの例外が発生しないようにするために再転送が必要
JTableからActionMapを取得ActionMapからActionを取得- これらの
ActionはJTableにフォーカスが存在する状態でのコピー(Ctrl+C)と同一
- これらの
ActionListener#actionPerformed(ActionEvent)メソッドでActionを実行