![]() |
The Java Developers Almanac 1.4Order this book from Amazon. |
e967. Listening for Clicks on a Column Header in a JTable Componentint rows = 10; int cols = 5; JTable table = new JTable(rows, cols); JTableHeader header = table.getTableHeader(); header.addMouseListener(new ColumnHeaderListener()); public class ColumnHeaderListener extends MouseAdapter { public void mouseClicked(MouseEvent evt) { JTable table = ((JTableHeader)evt.getSource()).getTable(); TableColumnModel colModel = table.getColumnModel(); // The index of the column whose header was clicked int vColIndex = colModel.getColumnIndexAtX(evt.getX()); int mColIndex = table.convertColumnIndexToModel(vColIndex); // Return if not clicked on any column header if (vColIndex == -1) { return; } // Determine if mouse was clicked between column heads Rectangle headerRect = table.getTableHeader().getHeaderRect(vColIndex); if (vColIndex == 0) { headerRect.width -= 3; // Hard-coded constant } else { headerRect.grow(-3, 0); // Hard-coded constant } if (!headerRect.contains(evt.getX(), evt.getY())) { // Mouse was clicked between column heads // vColIndex is the column head closest to the click // vLeftColIndex is the column head to the left of the click int vLeftColIndex = vColIndex; if (evt.getX() < headerRect.x) { vLeftColIndex--; } } } }
e965. Listening for Changes to the Rows and Columns of a JTable Component e966. Listening for Column-Related Changes in a JTable Component
© 2002 Addison-Wesley. |