• category: swing folder: ColumnSelection title: JTableHeaderをクリックしてそのColumnのセルを全選択 tags: [JTable, JTableHeader, MouseListener] author: aterai pubdate: 2005-04-04T03:22:43+09:00 description: JTableHeaderをクリックしたとき、そのColumn以下にあるセルを全選択します。 image: https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTJrC8DyhI/AAAAAAAAAUw/SO1wMAudBiE/s800/ColumnSelection.png

概要

JTableHeaderをクリックしたとき、そのColumn以下にあるセルを全選択します。

サンプルコード

final JTable table = new JTable(model);
table.setCellSelectionEnabled(true);
final JTableHeader header = table.getTableHeader();
header.addMouseListener(new MouseAdapter() {
  @Override public void mousePressed(MouseEvent e) {
    if (!check.isSelected()) {
      return;
    }
    if (table.isEditing()) {
      table.getCellEditor().stopCellEditing();
    }
    int col = header.columnAtPoint(e.getPoint());
    table.changeSelection(0, col, false, false);
    table.changeSelection(table.getRowCount() - 1, col, false, true);
  }
});
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、JTableHeaderMouseListenerを追加し、JTableHeader#columnAtPoint(Point)メソッドを使って、マウスでクリックされた位置にあるColumnを取得しています。

Column全体の選択は、changeSelectionメソッドを二回使用することで実現しています。

参考リンク

コメント