问题标签 [tablemodel]
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 - Java:观察者模式和垃圾收集器
我已经实现了一个 TableModel,它的寄存器启动 PropertyChangeEvents。我的 TableModel 监听这些事件以触发 TableModelEvents 以刷新底层 JTable。
如果 TableModel 被清除或使用新寄存器刷新...... TableModel 是否可以在每个寄存器中调用“removePropertyChangeListener”方法以允许 GC 收集这些寄存器?
假设没有其他对这些寄存器的实时引用。
java - 从 JXTreeTable 中获取选定的值
我正在构建一个treetable
usingJXTreeTabble
并且我想menu
根据所选值禁用/启用项目。所以,我试图把这段代码放在我的table model
:
问题
以上仅适用于table
未扩展的内容。因为 的index
可能selected row
大于size
t able model
(模型可以有两个项目,当所有内容都展开时,行可以有 10 个)。此外,the object type
of the 与 theparent
不同children
(想想一本有章节的书作为它的孩子)。
作为正确执行上述操作的方法,您有什么建议?
java - 使 JTable 单元格不可编辑
当用户双击时,我试图使 JTable 的所有单元格都不可编辑。我读了很多论坛帖子,普遍的共识是创建一个新的表模型类,扩展 DefaultTableModel 然后覆盖方法 isCellEditable(int row, int column)。我做了所有这些,现在当我运行我的程序(小程序)时,单元格中没有显示任何内容。注意这个学期我有一位教授认为小程序并没有过时......
表模型的代码:
希望你们中的一些 Java 大师能找到我的错误 :)
swing - JTable - 为什么在添加一行后不保留 TableColumns?
我正在使用 JTable :
问题是每次我向模型中添加一行时,TableColumnModel 似乎又回到了默认值,并且所有列的宽度都相同
swing - 无法理解如何同时使用表模型和可观察对象
我有一些相当复杂的数据,目前驻留在哈希表中,这些哈希表指向也包含哈希表的其他类,因为我试图保留的数据中有一对多的关系。
在世界的另一端,我有一个工作得很好的表,只是它与我的数据模型没有任何联系。它有自己的表格模型。我以非常简单的方式创建它-
我的平板数据模型很简单,
这适合我,因为我还必须做一些事情,比如添加和删除行,使用这个简单的数据模型,大部分工作都为我完成了。
我还实现了鼠标侦听器和单元格渲染器,因此当我单击列的标题时,它会变为活动状态,并且相邻列中的单元格会以另一种颜色重新绘制,以表明它们不再可编辑。
到目前为止一切都很好,但是对于我的界面,我有第二个表,它总结了第一个表的结果。它只有三行,没有标题。我想我做的工作可能比我做它时需要做的要多。
所以这给了我一组很好的表格,它们按照预期的方式重新着色,它们将数据限制为有效值并正确格式化(我没有列出我的渲染器)。
但这是应该发生的事情 - 用户在表 1 的第 1 列中输入一个值,然后我需要对第 1 列中的所有值求和,然后将表 2 的第 1 列中的值相加,然后重新计算中的所有值表 1 的第 2 列基于此新值。
相反,如果第 2 列是活动列并且用户更改了表 1 的第 2 列中的值,那么我需要获取表 2 中第 1 列的值并使用它来重新计算表 1 中第 1 列的所有值和还将第 2 列的值求和并将它们放在表 2 的第 2 列中。需要注意的是,用户不能输入新值,这样第 2 列中的数字之和就会超过 100。
表 2 也可以编辑,这需要计算表 1 中的所有值。
所以......在我看来,我应该有一个可观察的,我应该将我的表注册为观察者和可观察的控制器。所以我可以写一个 observable,但我还有我的两个表数据模型。我已经阅读了很多,但是我发现的所有示例都显示在一个可观察的中,它与一些简单的东西一起使用,比如文本字段或表格模型,但没有使用 Observable 类。另一个问题是,我不确定如何执行默认模型默认为我做的大部分很酷的事情(例如添加行或检查类型)。
在我为我的项目添加一个全新的复杂维度之前——有人能给我一些建议吗?以某种不需要重新编写所有默认表模型操作的方式将几乎没有行或列概念的数据模型与表数据模型混合在一起是否容易?目前,整个过程对我来说似乎是难以置信的复杂。我非常需要一些关于这应该如何工作的明确解释。
java - 相同的数据集,两个不同的 JTable
我有一些数据必须通过两个 JTable 显示;数据是相同的,但每个表的显示方式都会有所不同。此外,我从外部连接接收数据(在这种情况下为 JMS,但这并不重要,它可能是数据库或其他)。
由于我是 Swing 的新手,我仍然对谁应该触发事件、谁应该听它们以及如何进行一些困惑,以便修改我的数据集,我将同时更新两个表。
现在,我的数据集结构的一个小例子以及一些虚拟数据:
基本上,我的数据集将是classes
Controller 类中的字段,两个 JTable 必须以不同的方式显示内容。也就是说,Table1 必须显示如下内容:
所以基本上,对于每个教室,课程列表。
表 2 应该显示如下内容:
我应该看到所有教室的所有学生。
如您所见,数据相同,但显示方式不同。我想做的是,当我的数据发生变化时,表格也会自动更新。就我目前的理解而言,我必须继承 AbstractTableModel 并为我想要显示的数据类型创建两个不同的 TableModel;我没有得到的是:
- 一旦发生一些变化,模型将如何获取他们的数据?
- 谁应该将此更改通知模型?
- 调用“fireTableXXXEvent()”是否足以触发视图刷新?
我希望我说得足够清楚......无论如何,非常感谢你!再见
java - 从 jtable 中删除 AbstractAction
好的。我有一个大型项目,其中一个特定的 jtable 在启动时创建并且永远不会重建。表格模型被刷新并根据各种用户操作重新绘制表格。
我添加了一个自定义 TableCellListener 类来响应单元格更改以及一个 AbstractAction。这是第一次用数据填充表时执行的代码。(如果没有“firstLoad”检查,每次重绘表格时都会附加多个操作)。
TableCellListener 是Rob Camick 在此处发布的自定义侦听器,“sayIt”位是我自己的调试代码。
这一切都很好,但我想在每次重建表时完全删除监听器并再次添加它,因为它正在“记住”最后一个选定单元格的值,现在无效,因为表数据是新的。
我相当确定“removePropertyChangeListener()”类型调用会做到这一点,但它希望侦听器作为参数,我不知道如何找到它。
java - 在单元格编辑器中调用操作后单元格不会更新
我正在使用带有单元格渲染器的表格,它允许我在每个单元格中放置一个带有值的按钮“x”,以便我可以通过按下按钮来删除单元格的值。单元格编辑器将动作侦听器分配给按钮,并在按下按钮时调用正确的动作。
作为 DefaultTableModel 的表模型中的每一列都由值的数组列表填充。我成功地通过按下按钮从数组列表中删除了正确的值,并且表中的每个其他单元格在更改后刷新,但被删除值的单元格保持不变。如果我重新启动应用程序或向数组列表添加一个值,则表会按预期刷新,并且一切看起来都应该如此。
那么问题是,单元格渲染器似乎不会忘记单元格的初始值,因此即使重新绘制表格,仍会继续将此值打印到单元格中。有谁知道我如何正确刷新表格以便正确显示值?
表类:
单元格编辑器类:
提前致谢
java - 如何清除 JTable 中的数据?
我在 Netbeans 编程,框架中有一个 jTable。
我在其中加载了占据很多行的数据,但随后我加载了另一个行数少得多的表。
当我运行它并加载第二个表时,第一个表的额外行仍然出现在那里。我希望只看到第二张桌子。
我已经尝试过jTable.removeAll();
java - 我们可以在 JTables 中使用通用的 TableModel 吗?
我现在正在研究 JTables 并有一堆业务对象,我使用 Hibernate + Spring Data JPA从数据库中检索这些对象。
我喜欢 Spring Data JPA 处理 DAL 的所有繁琐实现,并且想知道是否有类似的TableModel
.
基本上,我会有一些类似的东西:
public class GenericTableModel<T> extends AbstractTableModel
并且GenericTableModel
会使用反射和/或注释来查看T
.
这样的事情存在吗?我希望我不必为要在 JTable 上显示的每个对象都有一个 TableModel ..