Сортировка столбцов JXTable изменяется от 1,0 до 1,6 - PullRequest
3 голосов
/ 02 марта 2012

Я недавно обновил библиотеку SwingX в приложении с версии 1.0 до 1.6.2, так как мы обновили до JDK1.6.Я знаю, что сортировка была изменена для повторного использования некоторых компонентов Core JDK, которые были представлены в JDK 1.6.

Однако в версии 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 это больше не работает.

Я проверил документы, но не нашел ничего, чтобы снова включить это поведение.Поэтому, прежде чем приступить к добавлению этой функциональности, я хотя бы спросил здесь, знает ли кто-нибудь простой способ повторного введения поведения с нажатой клавишей Shift

1 Ответ

3 голосов
/ 02 марта 2012

не поддерживается, по крайней мере, не так, как в 1.0.

Ближайшее, что вы можете получить с поддержкой по умолчанию, - это установить свойство sortOrderCycle в JTable, после чего повторные нажатия будут циклически проходить через те состояния для столбца, по которому щелкают:

table.setSortOrderCycle(ASCENDING, DESCENDING, UNSORTED);

Это отличается от старого поведения тем, что старые удаленные все сортировки - если вам это нужно, пользовательский mouseListener, который сбрасывает ключи сортировки, - путь.

Кроме того, вы можете рассмотреть вопрос о подаче запроса на функцию в системе отслеживания проблем SwingX и начать обсуждение на форуме SwingLabs: основной причиной, по которой мы решили отказаться от него, была согласованность с поведением ядра. И как никто не лаял, так и осталось: -)

...