java - JXTable 列排序在 1.0 和 1.6 之间发生变化

标签 java swing swingx jxtable tablerowsorter

自从我们更新到 JDK1.6 后,我最近将应用程序中的 SwingX 库从 1.0 版更新到 1.6.2 版。我知道排序已更改为重新使用 JDK 1.6 中引入的一些核心 JDK 组件。

但是,在 1.0 版中,可以通过单击标题对列进行排序,随后的单击会恢复排序顺序,而 shift 单击会删除排序并恢复为原始顺序。更新到1.6.2版本后,shift点击行为不再存在。

小样本

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-click 行为的简单方法

最佳答案

它不受支持,至少不支持与 1.0 中完全相同的方式。

默认支持最接近的是在 JTable 上设置 sortOrderCycle 属性,然后重复点击将循环显示被点击列的那些状态:

table.setSortOrderCycle(ASCENDING, DESCENDING, UNSORTED);

这与旧行为的不同之处在于旧的删除所有排序 - 如果您需要,重置排序键的自定义 mouseListener 是可行的方法。

此外,您可以考虑在 SwingX 问题跟踪器中提交功能请求,并在 SwingLabs 论坛上开始讨论:我们决定放弃它的主要原因是与核心行为的一致性。由于没有人吠叫,它就留在了那里 :-)

关于java - JXTable 列排序在 1.0 和 1.6 之间发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9532044/

相关文章:

java - 通过单击特定图像获取有关特定对象的信息

java - 获取桌面 Java SE Firebase 项目的凭据

Java Swing 鼠标监听器不工作

Java (Swing) - 如何旋转一堆线?

java - 无法在 JTextPane 中的 DoubleClick 上选择 "text with number and underscore"

java - Swingx组件提供者: hide component on certain rows

java - 从共享首选项中检索数据

java - 图形被 Swing 组件切断

java - JTree : Update tree after deleting nodes

java - java 中的图形和 2D 图形