gpt4 book ai didi

java - 当 SQL 进行排序时,如何启用 GUI 行为来对 JTable 进行排序?

转载 作者:行者123 更新时间:2023-11-30 01:40:01 25 4
gpt4 key购买 nike

如何启用 JTable 图标和行为以按列对表行进行排序,而不让它使用比较谓词进行排序?也就是说,如何告诉表头在正在使用的列中显示升序/降序排序顺序的箭头,并让它在排序顺序/列更改时调用适当的方法?

我正在尝试创建一个由 SQL 查询或 View 支持的(可编辑、可过滤、可排序)JTable。这些行可能不适合内存,并且可能无法干净地映射到 java 对象,因此我想在 SQL 中进行所有排序/过滤。我已经编写了用于更改查询的代码,以适应按列排序、按值过滤和可见列。

为了使用它,我计划使用 TYPE_SCROLL_SENSITIVE,CONCUR_UPDATABLE 编写一个基于 ResultSet 的 JTableModel,这样对数据库的更改就会传播到 ResultSet。我将定期(每秒几次)强制刷新 ResultSet 中的可见 JTable,以便用户可以看到对数据库的更改。用户对表的更改将在验证后传递到可更新的结果集。

我已经了解了如何正常进行排序,但大多数实现似乎依赖于 JTable 创建带有比较器谓词的 javax.swing.RowSorter,或者依赖于维护一个排序的行列表,该列表在以下情况下触发事件:改变了。所以,我的问题是:

ORM 框架不能回答这个问题,因为数据不能很好地映射到实体对象。另外,我使用的 DBMS 是 H2。

编辑:不幸的是,基于对行对象应用比较器或排序谓词的可排序 JTable 库也不合适。我不相信我能够将所有对象保存在内存中以便执行排序。此问题使我无法使用 SwingX JXTables、GlazedLists 或类似的库。我希望我可以,但我不能。期间。

** 我将处理数千行,可能数百万行,以及许多列。是的,我确实需要使用 SQL 来进行排序和过滤。**

问题:(重要性递减)

  1. 如何显示用于对行进行排序的列的指示符?
  2. 当左键单击列标题更改排序顺序时,如何让 JTable 触发适当的事件?
  3. 有没有更简单的方法来强制 JTable 在数据库更改时更新?
  4. 是否有一个库可以使这一切变得更加容易(连接数据库查询或 View 和 JTable)?
  5. 当我设计这样的系统时,我会遇到可怕的问题吗?

最佳答案

我自己从未使用过它,但是 JIDE Data Grids提供 DatabaseTableModel,它使用 SQL WHERE 和 ORDER BY 提供过滤和排序支持。

关于java - 当 SQL 进行排序时,如何启用 GUI 行为来对 JTable 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/912900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com