JavaでJTableの行ダブルクリックイベントを検出する方法
JTableは、複雑なデータ構造を表示するためのJComponentのサブクラスです。JTableはMVC(Model View Controller)デザインパターンに従って、データを行と列の形式で表示します。また、TableModelListener、TableColumnModelListener、ListSelectionListener、CellEditorListener、RowSorterListenerなどの各種リスナーインターフェースでイベントを処理できます。
JTableのダブルクリックイベントを検出するには、MouseAdapterクラスまたはMouseListenerインターフェースを使用します。MouseEventクラスのgetClickCount()メソッドの戻り値が「2」であるかどうかを判定することで、ダブルクリックを簡単に識別できます。
実装例
以下のコードは、JTableの行をダブルクリックした際に、選択されたセルの値をダイアログで表示するサンプルプログラムです。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public final class DoublClickJTableRowTest extends JFrame {
private JTable table;
private JScrollPane scrollPane;
public DoublClickJTableRowTest() {
setTitle("DoublClickJTableRow Test");
String[] columnNames = {"First Name", "Last Name"};
Object[][] data = {{"Raja", "Ramesh"}, {"Adithya", "Sai"}, {"Vineet", "Kumar"}, {"Krishna", "Kasyap"}};
table = new JTable(data, columnNames) {
// セル編集を無効化
public boolean editCellAt(int row, int column, java.util.EventObject e) {
return false;
}
};
table.setFocusable(false);
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent me) {
if (me.getClickCount() == 2) { // ダブルクリックイベントを検出
JTable target = (JTable)me.getSource();
int row = target.getSelectedRow(); // 選択された行を取得
int column = target.getSelectedColumn(); // 選択された列を取得
JOptionPane.showMessageDialog(null, table.getValueAt(row, column)); // 行・列の値を表示
}
}
});
scrollPane = new JScrollPane(table);
add(scrollPane);
setSize(375, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new DoublClickJTableRowTest();
}
}ポイント解説
- editCellAt()をオーバーライドしてfalseを返すことで、クリック時のセル編集を無効化し、行選択のみに集中できるようにしています。
- getClickCount() == 2の判定により、シングルクリックとダブルクリックを区別しています。
- getSelectedRow()とgetSelectedColumn()で、ユーザーが選択したセルの位置を取得できます。
実行結果
テーブル上の任意のセルをダブルクリックすると、そのセルの値がダイアログボックスに表示されます。

-
JavaでJTableのヘッダー(JTableHeader)にワードラップを実装する方法
JTableHeaderとはJTableHeaderは、JComponentクラスのサブクラスです。JTableオブジェクトを生成すると、コンストラクタが自動的に新しいJTableHeaderオブジェクトを作成し、テーブルコンポーネントのヘッダーを管理します。JTableHeaderオブジェクトはテーブルのカラムモデル(column model)と関連付けられており、これによりUIデリゲートが列のドラッグ操作や各列のヘッダーセルの描画を行えるようになっています。JTableクラスは、テーブルヘッダーとしてJTableHeaderオブジェクトを設定するためのsetTableHeader()メソッ
-
JavaのJListでダブルクリックとEnterキーイベントを検出・処理する方法
JListはJComponentクラスを継承したSwingコンポーネントの一つで、ユーザーが単一選択または複数選択を行えるリストを表示できます。JListはListSelectionListenerインターフェースを生成でき、このインターフェースには抽象メソッドvalueChanged()が1つだけ定義されています。 さらに、JListでは以下のようなイベント処理も可能です。 MouseListenerインターフェースを実装することで、リスト上のダブルクリックイベントを捕捉できる KeyListenerインターフェースを実装することで、Enterキーの押下イベントを捕捉できる これらのリス