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

2024-02-21

自从我们更新到 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 单击行为的简单方法


它不受支持,至少与 1.0 中的方式不支持。

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

table.setSortOrderCycle(ASCENDING, DESCENDING, UNSORTED);

这与旧行为的不同之处在于旧行为已删除all排序 - 如果您需要,可以使用重置排序键的自定义 mouseListener 。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JXTable 列排序在 1.0 和 1.6 之间发生变化 的相关文章

随机推荐

  • J:牛顿法的隐性副词

    我发现在 addons math misc brent ijs 布伦特方法作为副词的实现 我也想构建牛顿法作为副词 但这比构建默认动词要困难得多 这是牛顿迭代的显式版本 newton i 1 u u d 1 有了这样的用法 2 o newt
  • 在哪里可以找到 javascript 本机函数源代码? [复制]

    这个问题在这里已经有答案了 哪里可以找到原生js函数的源码 比如我想看一下eval 功能 Chrome 和 Firefox 都是开源的 您可以在这些产品的源代码中查看 javascript 引擎任何部分的实现 其他浏览器有自己的实现 例如
  • Android 上的 Cordova 全屏黑条

    我的 android cordova 应用程序在屏幕顶部和底部出现黑色水平条 我尝试将全屏插件和标签添加到 config xml 但它不会消失 https i stack imgur com esFEL png https i stack
  • 从 mongodb 结果 java 中删除 _id

    我的代码是 DBCollection collection db getCollection volume DBCursor cursor collection find DBObject resultElement cursor next
  • Oracle 数据库查询在第二次运行时抛出错误

    我有一个 VBA 代码 我在其中调用 oracle 使用 ODBC 检索数据两次 第一次数据检索没问题 但第二次却说 RunTime Error 2147467259 80004005 Unspecified error 我的代码如下 注意
  • 如何禁用 NSDocument 的窗口标题弹出窗口

    我有一个基于 NSDocument 的应用程序 启用了自动保存 I d like to prevent this popup from showing 我尝试从 NSWindow 的 title representedFilename 和
  • 如何在访问 laravel 环境和类时在命令行上运行 php 脚本

    我在 Web 服务器上有一个 laravel 3 环境 但我想在命令行上运行 php 脚本 我想访问 laravel 环境中的任何 php 脚本 例如控制器 模型或视图文件 访问的相同类和方法 我怎样才能做到这一点 我强烈建议您将 PHP
  • Python - SQLite JSON1 加载扩展

    我想在 Python 中使用 SQLite 的 json1 扩展 根据官方文档 http sqlite org json1 html 它应该是一个可加载的扩展 我从以下位置获取了 json1 c 文件source http sqlite o
  • 在Python中解压文件

    我通读了zipfile文档 https docs python org 3 library zipfile html 但不明白如何unzip一个文件 仅介绍如何压缩文件 如何将 zip 文件的所有内容解压缩到同一目录中 import zip
  • Haskell:在更新函数中引用先前更新的列表元素

    假设我有以下定义 data Book Book id Int title String type Shelf Book 假设我有一个假设的功能 upd用于更新 updShelf Shelf gt Shelf updShelf all boo
  • OSGI环境中单例的迁移解决方案

    我正在 Java EE 环境中工作 其中每个应用程序都位于其自己的 war 文件中 在每个应用程序 war 文件的 WEB INF lib 中 有一个由所有应用程序共享的公共 jar 这个公共 jar 包含几个可以从代码中的许多点访问的单例
  • 从 HashMap 获取值时为什么需要双 & 符号?

    我在 Rust 中的引用方面遇到了一些麻烦 我有以下无法编译的代码 use std collections HashMap fn main let mut map HashMap new map insert 0 0 map insert
  • 按发布降序显示帖子

    我正在尝试测试 Firebase 以允许用户使用以下方式发表评论push 我想用以下内容显示我检索到的数据 fbl child sell limit 20 on value function fbdata handle data displ
  • 当向 RecyclerView ListAdapter 提交新列表时,差异检查始终为 areContentsTheSame() 返回 true

    我正在使用 MVVM 架构来构建一个简单的订购应用程序 我在 ProductsFragment 中使用 RecyclerView 来列出所有可以订购的产品 我还在我的 ViewModel 中使用 LiveData 并在我的 Fragment
  • 满足我需求的强制门户

    我正在为我的组织寻找强制门户 我看到很多这样的应用程序将允许用户在 a 输入凭据或 b 付款后通过 我正在寻找的东西有点不同 让我介绍一些有关我的系统的基础知识 我正在使用活动目录和内部 DNS 运行基于 Windows 的网络 我有一个内
  • jquery Flexslider 手动控件不起作用

    我正在尝试为 flexslider 插件实现手动控制 这是我的代码 div class container div class columns row div class flexslider ul class slides li styl
  • 从 Flask-sqlalchemy 中的连接查询读取

    成功连接两个数据库表后 我尝试通过寻址第一个表来读取第二个表中的数据 我正在致辞opinion topic name来自我的 jinja2 模板 但没有返回任何内容 如何从连接的查询中访问 Topic topic name 值 view m
  • 内联图像未从 GatsbyJS 中的 markdown 文件正文加载

    我正在尝试使用 gatsby remark images 在我的 markdown 文件中使用内联图像 不幸的是 该图像无法加载到我的本地主机上 我不知道这是否只是语法错误 或者我错过了一些重大的东西 这是config https gith
  • __iter__ 是如何工作的?

    尽管阅读了它 但我仍然不太明白如何 iter 作品 一个简单的解释是什么 我见过def iter self return self 我不知道这是如何工作的 也不知道这是如何工作的步骤 我可以简单地说 iter 在类上定义一个方法 该方法将返
  • JXTable 列排序在 1.0 和 1.6 之间发生变化

    自从我们更新到 JDK1 6 以来 我最近将应用程序中的 SwingX 库从版本 1 0 更新到了 1 6 2 我知道排序已更改为重新使用 JDK 1 6 中引入的一些核心 JDK 组件 但是 在版本 1 0 中 可以通过单击标题对列进行排