Code
@Override public void mouseClicked(MouseEvent e) {
JTableHeader header = (JTableHeader)e.getSource();
JTable table = header.getTable();
TableColumnModel columnModel = table.getColumnModel();
int vci = columnModel.getColumnIndexAtX(e.getX());
int mci = table.convertColumnIndexToModel(vci);
TableColumn column = table.getColumnModel().getColumn(mci);
Rectangle r = header.getHeaderRect(vci);
Container c = (Container)getTableCellRendererComponent(table, "", true, true, -1, vci);
r.translate(r.width-BUTTON_WIDTH, 0);
r.setSize(BUTTON_WIDTH, r.height);
Point pt = e.getPoint();
if(c.getComponentCount() > 0 && r.contains(pt) && pop!=null) {
pop.show(header, r.x, r.height);
JButton b = (JButton)c.getComponent(0);
b.doClick();
e.consume();
}
}
@Override public void mouseExited(MouseEvent e) {
rolloverIndex = -1;
}
@Override public void mouseMoved(MouseEvent e) {
JTableHeader header = (JTableHeader)e.getSource();
JTable table = header.getTable();
TableColumnModel columnModel = table.getColumnModel();
int vci = columnModel.getColumnIndexAtX(e.getX());
int mci = table.convertColumnIndexToModel(vci);
rolloverIndex = mci;
}
References