Swing/SelectAllButton のバックアップの現在との差分(No.1)
TITLE:JTableの行全選択とコピー
Posted by terai at 2009-06-22
JTableの行全選択とコピー
JTableの全選択や選択された行のコピーをJButtonなどの別コンポーネントから行います。- category: swing folder: SelectAllButton title: JTableを別コンポーネントから操作 tags: [JTable, ActionMap] author: aterai pubdate: 2009-06-22T11:18:08+09:00 description: JTableの全選択や選択された行のコピーをJButtonなどの別コンポーネントから行います。 image:
概要
JTable
の全選択や選択された行のコピーをJButton
などの別コンポーネントから行います。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
#screenshot
サンプルコード
#spanend
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
private final JTable table = new JTable(model);
private final Action copyAction = new AbstractAction("copy") {
public void actionPerformed(ActionEvent e) {
@Override public void actionPerformed(ActionEvent e) {
e.setSource(table);
table.getActionMap().get("copy").actionPerformed(e);
}
};
解説
上記のサンプルでは、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を取得
- ActionListener#actionPerformed(ActionEvent)メソッドでActionを実行
解説
上記のサンプルでは、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
を実行