0

現在、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);
    }
4

0 に答える 0