3

JDK1.6 に更新したため、最近、アプリケーションの SwingX ライブラリをバージョン 1.0 から 1.6.2 に更新しました。JDK 1.6 で導入されたコア JDK コンポーネントの一部を再利用するように並べ替えが変更されたことは知っています。

ただし、バージョン 1.0 では、ヘッダーをクリックして列を並べ替えることができ、その後のクリックで並べ替え順序が元に戻り、Shift クリックで並べ替えが削除されて元の順序に戻りました。バージョン 1.6.2 への更新後、シフト クリックの動作はなくなりました。

小さなサンプル

import org.jdesktop.swingx.JXTable;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;
import java.awt.EventQueue;

public class JXTableSortingTest {
  public static void main( String[] args ) {
    EventQueue.invokeLater( new Runnable() {
      public void run() {
        initUI();
      }
    } );
  }

  private static void initUI(){
    JFrame testFrame = new JFrame( "TestFrame" );
    JXTable table = new JXTable(  );
    DefaultTableModel model =
        new DefaultTableModel( new Object[][]{ new Object[]{"A"}, new Object[]{"B"}, new Object[]{"C"}, new Object[]{"D"}, new Object[]{"E"} }, new Object[]{"Click me"} );
    table.setModel( model );

    testFrame.getContentPane().add( new JScrollPane( table ) );

    testFrame.pack();
    testFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    testFrame.setVisible( true );
  }
}

このサンプルをバージョン 1.0 で実行すると、ヘッダーを Shift キーを押しながらクリックして列の並べ替えを削除できますが、バージョン 1.6.2 ではこれが機能しなくなりました。

ドキュメントを確認しましたが、この動作を元に戻すものは何も見つかりませんでした。したがって、この機能を追加する前に、シフトクリックの動作を簡単に再導入する方法を誰かが知っているかどうかをここで尋ねました

4

1 に答える 1

3

少なくとも1.0とまったく同じ方法では、サポートされていません。

デフォルトのサポートで利用できる最も近い方法は、JTableにsortOrderCycleプロパティを設定することです。その後、クリックを繰り返すと、クリックされた列の状態が循環します。

table.setSortOrderCycle(ASCENDING, DESCENDING, UNSORTED);

これは、古いものがすべてのソートを削除したという点で古い動作とは異なります。必要な場合は、ソートキーをリセットするカスタムmouseListenerが最適です。

さらに、SwingX課題追跡システムに機能リクエストを提出し、SwingLabsフォーラムでディスカッションを開始することを検討してください。これを削除することにした主な理由は、コアの動作との一貫性でした。そして、誰も吠えなかったので、それはそこに残されました:-)

于 2012-03-02T11:01:56.253 に答える