• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JTableのセルをダブルクリック
#navi(../)
RIGHT:Posted by [[terai]] at 2004-06-28
*JTableのセルをダブルクリック [#h86d20ad]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2004-06-28~
更新日:&lastmod;

#contents

**概要 [#p16a15ea]
JTableのセルをダブルクリックして内容を表示します。

-&jnlp;
-&jar;
-&zip;

#screenshot

**サンプルコード [#t2033b2b]
#code{{
 table.addMouseListener(new MouseInputAdapter() {
   public void mouseClicked(MouseEvent me) {
     int col = table.columnAtPoint(me.getPoint());
     if(col==0 && me.getClickCount()==2) {
       showInfo(me);
       table.repaint();
     }else{
       super.mouseClicked(me);
     }
   }
 });
table.addMouseListener(new MouseInputAdapter() {
  public void mouseClicked(MouseEvent me) {
    int col = table.columnAtPoint(me.getPoint());
    if(col==0 && me.getClickCount()==2) {
      showInfo(me);
      table.repaint();
    }else{
      super.mouseClicked(me);
    }
  }
});

 private void showInfo(final MouseEvent me) {
   SwingUtilities.invokeLater(new Runnable() {
     public void run() {
       int row = sorter.modelIndex(table.rowAtPoint(me.getPoint()));
       String str = model.getValueAt(row, 1)+"("+model.getValueAt(row, 2)+")";
       JOptionPane.showMessageDialog(MainPanel.this, str, "タイトルバー",
                                     JOptionPane.INFORMATION_MESSAGE);
     }
   });
 }
private void showInfo(final MouseEvent me) {
  EventQueue.invokeLater(new Runnable() {
    public void run() {
      int row = sorter.modelIndex(table.rowAtPoint(me.getPoint()));
      String str = model.getValueAt(row, 1)+"("+model.getValueAt(row, 2)+")";
      JOptionPane.showMessageDialog(MainPanel.this, str, "タイトルバー",
                                    JOptionPane.INFORMATION_MESSAGE);
    }
  });
}
}}
-&jnlp;
-&jar;
-&zip;

**解説 [#h9a084b1]
上記のサンプルでは、0列目のセルをマウスでダブルクリックするとダイアログが開くようになっています。このとき、そのセルが編集状態になってしまわないように、編集不可にしておく必要があります。

//**参考リンク
**コメント [#b0c89640]
#comment