问题标签 [jtable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 当 SQL 进行排序时,如何启用用于排序 JTable 的 GUI 行为?
如何启用 JTable 图标和行为以按列对表行进行排序,而不让它使用比较谓词进行排序?也就是说,如何告诉表头在正在使用的列中显示升序/降序排序的箭头,并在排序顺序/列更改时让它调用适当的方法?
我正在尝试创建一个由 SQL 查询或视图支持的(可编辑、可过滤、可排序的)JTable。这些行可能不适合内存,并且可能无法干净地映射到 java 对象,所以我想在 SQL 中进行所有排序/过滤。我已经编写了用于更改查询以适应按列排序、按值过滤和可见列的代码。
TYPE_SCROLL_SENSITIVE,
为了使用它,我计划使用and编写基于 ResultSet 的 JTableModel CONCUR_UPDATABLE
,因此对 DB 的更改会传播到 ResultSet。我将定期(每秒几次)强制刷新 ResultSet 中的可见 JTable,因此对数据库的更改对用户可见。用户对表的更改将在验证后传递给可更新的 ResultSet。
我已经稍微了解了排序是如何正常进行的,但大多数实现似乎都依赖于 JTable 创建一个带有 Comparator 谓词的 javax.swing.RowSorter,或者依赖于维护一个在更改时触发事件的排序行列表。所以,我的问题:
ORM 框架不是这个问题的答案,因为数据不能很好地映射到实体对象。另外,我使用的 DBMS 是 H2。
编辑:不幸的是,基于应用比较器或对行对象排序谓词的可排序 JTable 库也不合适。我不相信我能够将所有对象保存在内存中以执行排序。这个问题使我无法使用 SwingX JXTables、GlazedLists 或类似的库。我希望我能,但我不能。时期。
** 我将处理数千行,可能是数百万行,以及许多列。是的,我确实需要使用 SQL 来进行排序和过滤。**
问题:(按重要性递减)
- 如何显示用于对行进行排序的列的指标?
- 当左键单击列标题以更改排序顺序时,如何让 JTable 触发适当的事件?
- 有没有更简单的方法可以在数据库更改时强制 JTable 更新?
- 是否有一个库可以使这一切变得相当容易(连接数据库查询或视图和 JTables)?
- 当我设计这样的系统时,我会遇到可怕的、可怕的问题吗?
java - 在 DefaultCellEditor 派生实例完成其工作后更新单元格渲染器
我使用JTable
具有自己的单元格渲染器和单元格编辑器的 a。
比如说,这个表包含 2 列和 x 行:
第一列包含一个布尔值,它自己的单元格渲染和单元格编辑器(一个单选按钮)
第二列包含一个字符串值,它自己的单元格渲染器:它在第一个当前行的列设置为 true(选中单选按钮)
编辑器正确更新了所有值,但是当单选按钮设置为 true 时,第二行不会变为粗体...
我必须检查不同行的单选按钮才能查看更改
我在哪里可以触发这些更改?
干杯并感谢您的帮助
RadiobuttonTableCellEditor.java
java - 如何在 JTable 中隐藏(使不可见)行?
有什么办法吗?
java - JTable在单击时选择了错误的单元格
我在一个非常复杂的基于 Eclipse 的应用程序中工作,并且在 JSplitPane 中使用基于 JTable 的自定义组件存在问题。我实际上可以访问的应用程序部分是面板、选项卡内、面板内、实际应用程序内,所以有很多事情可能会出错。
我现在遇到的具体问题是,当我单击表格组件时,它选择了错误的单元格。如果我在第 0 行第 0 列中选择一个单元格,则实际选择的单元格位于第 2 行第 0 列,比实际点击低约 20 个像素。这只发生在表格位于 JSplitPane 中时:如果我只是将表格本身添加到面板中,则单元格选择是正确的。
在我看来,因为表格在 JSplitPane 中,表格的边界(或者可能包含表格的滚动窗格的视口?)在某处偏离了大约 20 个像素。我遇到的另一个可以支持这个理论的问题是,滚动表格会导致在表格上方重新绘制:例如,当我向下滚动时,它实际上是向上移动的,而不是表格滚动(在表格上方的组件上绘制) 滚动前大约 20 像素。我能够通过添加来解决这个问题
到包含表格的滚动窗格。
由于涉及到所有自定义组件,我实际上无法获得一个显示问题的小应用程序,但我有下一个最好的东西,它是一个显示我拥有的布局的应用程序(当然,它实际上并没有有同样的问题)。关于可能导致问题的任何想法?
java - Java JTable设置列宽
我有一个 JTable,我在其中设置列大小如下:
这很好用,但是当表格最大化时,我在最后一列的右侧得到了空白空间。调整大小时是否可以将最后一列调整到窗口的末尾?
我AUTO_RESIZE_LAST_COLUMN
在文档中找到了属性,但它不起作用。
编辑:JTable
是在JScrollPane
它的首选大小设置。
java - 如何在 jtable 单元格中换行?
我正在尝试按照本教程中的描述实现自定义 TableRenderer 。我想让渲染器对给定单元格长的每个文本进行换行。这个想法是,使用 TextArea 作为渲染器,因为它支持换行。但是,以下代码的行为与预期不同:
我将此渲染器设置为
但是单元格条目保持未包装。如果我添加this.setBackground(Color.YELLOW)
到该getTableCellRendererComponent()
方法中,所有单元格都是黄色的,但没有被包裹。
有任何想法吗?
更新:正如 Michael Borgwardt 在评论中所说,问题不是换行,而是行高:JTables 行是固定大小的,所以如果一个单元格越来越高(因为文本现在是多行的),我们必须增加行高。但是多少钱?我会检查这是否值得另一个 SO 问题。如果没有,我将在此处添加此解决方案。
Update2:以下代码将确定行高(如果放在 中getTableCellRendererComponent()
):
java - ClassCastException 的未知来源(在 JTables 中)
我目前正在重构JTable
显示多种不同类型数据的 a 。这种重构的主要原因是有一些ClassCastExceptions
(编写代码的作者/朋友暂停了),我似乎无法找到它们的来源。由于代码库很大,我不知道从哪里开始。有没有人有什么建议?我意识到这个问题的模棱两可并道歉!
我在下面包含了堆栈跟踪。谢谢!!
java - JTable 中的页脚行
将页脚行放入 JTable 的最佳方法是什么?有没有人有任何示例代码可以做到这一点?
到目前为止,我想到的唯一方法是将一个特殊的行放入表模型中,该行总是排序到底部。
这是我最终得到的结果:
排序工作正常,但选择页脚行有点奇怪。
java - 模拟 JTable 的 JavaFX 组件
我有一个大型数据集,需要向用户显示并JTable
在JavaFX
.
java - 在 RowSort 操作之后执行操作
我有一个JTable
和一个TableRowSorter
,我想在排序完成后执行一个操作。我一直在浏览网络,到目前为止,我的运气并不好。
最初我认为只是 aRowSorterListener
可以解决问题,但不幸的是它在排序完成后不执行操作。
MouseListener
在标题中添加 aJTable
可能会起作用,但解决方案并不是非常优雅。
有没有人有任何想法?
非常感谢!
编辑(来自评论):以下内容被添加到TableModel
扩展自定义类中的方法中AbstractTableModel
。只要在自定义类JTable
中设置/指定,就会调用此方法。TableModel