ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-JXTable列排序在1.0和1.6之间更改

2019-12-01 18:03:22  阅读:160  来源: 互联网

标签:swingx swing jxtable tablerowsorter java


自从我们更新到JDK1.6以来,我最近将应用程序中的SwingX库从1.0版本更新到1.6.2.我知道排序已更改为重新使用JDK 1.6中引入的某些Core 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版中运行此示例可以通过在标题上单击并单击来删除列排序,而在1.6.2版中,该列不再起作用.

我检查了文档,但没有遇到任何改变该行为的方法.因此,在开始添加此功能之前,我在这里询问了是否有人知道重新引入Shift-Click行为的简便方法

解决方法:

不支持它,至少不完全以与1.0中完全不同的方式.

您可以使用的最接近默认支持是在JTable上设置sortOrderCycle属性,然后重复单击将在被单击列的状态之间循环显示:

table.setSortOrderCycle(ASCENDING, DESCENDING, UNSORTED);

这与旧的行为不同,旧的行为删除了所有排序-如果需要,可以使用自定义mouseListener来重置排序键.

另外,您可能会考虑在SwingX问题跟踪器中提出功能请求,然后在SwingLabs论坛上开始讨论:我们决定放弃它的主要原因是与核心行为保持一致.而且没有人吠叫,它留在那儿:-)

标签:swingx,swing,jxtable,tablerowsorter,java
来源: https://codeday.me/bug/20191201/2082438.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有