現在、Jtable には名前用のスペースがあり、各列ヘッダーにコンボボックスがあります。ヘッダー名をクリックすると、デフォルトの並べ替えが引き続き行われるようにしたいのですが、コンボボックスをクリックすると、並べ替えないようにしたいと思います。
コンボボックスがクリックされたときに mouseclick イベントを消費しようとしましたが、AWT イベントハンドラーはリスナーの前にイベントを既に受け取っています。
TableRowSorter は次のように宣言されています。
TableRowSorter<TableModel> tableRowSorter = (TableRowSorter<TableModel>) mainTable.getRowSorter();
tableRowSorter.addRowSorterListener(new RowSorterListener() {
@Override
public void sorterChanged(RowSorterEvent e) {
if (!(mainTable.getSelectedRow() < 0)) {
Rectangle r = mainTable.getCellRect(mainTable.getSelectedRow(), 0, true);
Point p = mainScrollPane.getViewport().getViewPosition();
r.setLocation(r.x, r.y - p.y);
mainScrollPane.getViewport().scrollRectToVisible(r);
}
}
});
//Section for popupmenu located in jtable class
aggregationMenu = new JPopupMenu();
aggregationMenu.setInvoker(this);
for (AggregationType type : AggregationType.values()) {
if (type == AggregationType.GROUP)
continue;
JMenuItem mi = new JMenuItem();
mi.setText(type.toString());
mi.addActionListener(this);
aggregationMenu.add(mi);
}