Swing/DoubleClick のバックアップの現在との差分(No.15)
TITLE:JTableのセルをダブルクリック
Posted by aterai at 2004-06-28
JTableのセルをダブルクリック
JTableのセルをダブルクリックして内容を表示します。- category: swing folder: DoubleClick title: JTableのセルをダブルクリック tags: [JTable, MouseListener] author: aterai pubdate: 2004-06-28T05:48:37+09:00 description: JTableのセルをダブルクリックして内容を表示します。 image:
概要
JTable
のセルをダブルクリックして内容を表示します。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
サンプルコード
#spanend
#spandel
sorter.setTableHeader(table.getTableHeader());
#spanend
#spandel
//JDK 6: table.setAutoCreateRowSorter(true);
#spanend
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
table.setAutoCreateRowSorter(true);
#spanend
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(final MouseEvent me) {
if(me.getClickCount()==2) {
Point pt = me.getPoint();
int row = sorter.modelIndex(table.rowAtPoint(pt));
//JDK 6: int row = table.convertRowIndexToModel(table.rowAtPoint(pt));
String str = String.format("%s (%s)", model.getValueAt(row, 1),
model.getValueAt(row, 2));
JOptionPane.showMessageDialog(table, str, "title",
JOptionPane.INFORMATION_MESSAGE);
@Override public void mouseClicked(MouseEvent e) {
if (e.getClickCount() >= 2) {
Point pt = e.getPoint();
int idx = table.rowAtPoint(pt);
if (idx >= 0) {
int row = table.convertRowIndexToModel(idx);
String str = String.format(
"%s (%s)", model.getValueAt(row, 1), model.getValueAt(row, 2));
JOptionPane.showMessageDialog(
table, str, "title", JOptionPane.INFORMATION_MESSAGE);
}
}
}
});
解説
上記のサンプルでは、セルをマウスでダブルクリックするとダイアログが開くようになっています。各セルは編集状態になってしまわないように、編集不可にしておく必要があります。解説
-
JTable
にMouseListener
を設定してMouseEvent#getClickCount()
メソッドでマウスクリック数を取得し、これが2
以上になる場合はセルがダブルクリックされたと判断 -
JTable
のセルはダブルクリックで編集開始がデフォルトなのですべてのセルを編集不可に設定