1

複数の列を持つ JTable があります。一部の列をソート不可にしたかったのです。どうすればいいのですか?私はJava 1.4を使用して立ち往生しているため、1.6まで導入されなかったため、TableRowSorterを使用することはオプションではありません。

4

3 に答える 3

5

(たとえば、pseudo_code のみ、例としてすべてがハードコードされており、ColumnModel の列をオーバーライドする必要があります)

if (column >= 0 && column < getModelWrapper().getColumnCount() 
    && isSortable(column)) {

if (column >= 0 && column <=1  /*getModelWrapper().getColumnCount()*/ 
    && isSortable(column)) {

public void toggleSortOrder(int column) {

次に、2 番目の列はソートできません

  • SSCCEがあなたの問題を実証したことを投稿してください。
于 2013-01-16T19:12:21.747 に答える
0

JTable の rowSorter を null に設定します。http://download.java.net/jdk7/archive/b123/docs/api/javax/swing/JTable.html#setRowSorter(javax.swing.RowSorter )を参照してください。

于 2013-01-16T19:02:01.997 に答える
0

一部を並べ替えたい場合は、リスナーを実装する必要があります。私はこのようなものを使用しました:

table.getTableHeader().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            int col= table.getTableHeader().columnAtPoint(e.getPoint());
            // column number col has been clicked -- sort if necessary,
            // discard the event if sorting is not desired.
            //
        }

    });

行をドラッグ アンド ドロップできるテーブルに注意してください。これを無効にすることができます

table.getTableHeader().setReorderingAllowed(false);
于 2013-01-16T19:08:58.283 に答える