Listening for Clicks on a Column Header in a JTable Component : JTableHeader « Swing « Java Tutorial






import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JTable;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;

public class Main {
  public static void main(String[] argv) throws Exception {
    JTable table = new JTable(5, 5);
    JTableHeader header = table.getTableHeader();
    header.addMouseListener(new ColumnHeaderListener());
  }
}
class ColumnHeaderListener extends MouseAdapter {
  public void mouseClicked(MouseEvent evt) {
    JTable table = ((JTableHeader) evt.getSource()).getTable();
    TableColumnModel colModel = table.getColumnModel();

    int index = colModel.getColumnIndexAtX(evt.getX());
    if (index == -1) {
      return;
    }
    Rectangle headerRect = table.getTableHeader().getHeaderRect(index);
    if (index == 0) {
      headerRect.width -= 10;
    } else {
      headerRect.grow(-10, 0);
    }
    if (!headerRect.contains(evt.getX(), evt.getY())) {
      int vLeftColIndex = index;
      if (evt.getX() < headerRect.x) {
        vLeftColIndex--;
      }
    }
  }
}








14.61.JTableHeader
14.61.1.Removing the Column Headers from a Scrollable in a JTable Component
14.61.2.Removing Column Headers: provide empty strings as the column header names.Removing Column Headers: provide empty strings as the column header names.
14.61.3.Hiding column headers: table.setTableHeader(null);Hiding column headers: table.setTableHeader(null);
14.61.4.Using Tooltips in Table Headers: Showing Tooltip Text in a Table HeaderUsing Tooltips in Table Headers: Showing Tooltip Text in a Table Header
14.61.5.Customizing Column Headers with IconsCustomizing Column Headers with Icons
14.61.6.Creating a Custom Column Header Renderer in a JTable Component
14.61.7.Setting Column Header Tool Tips in a JTable Components
14.61.8.Customizing a JTableHeader Look and Feel
14.61.9.Showing the Table Header in a Non-Scrollable JTable Component
14.61.10.Implementing Variable-Height Column Headers in a JTable Component
14.61.11.Listening for Clicks on a Column Header in a JTable Component