Java:JTable自动主键更新
我的 JTable 有一个 AbstractTableModel 作为其模型。 初始内容被解析为二维数组对象,从通用的 ArrayList 到系统的实体。同样在模型中,isCellEditable 在数据完整性方面被覆盖。 设置模型后,我设置了一些带有指定摆动对象的单元格编辑器。
我现在的问题就是这样。一旦空行发生更改,如何填充表的列[0]。此外,一旦空行发生更新,另一个空行将自动添加到 JTable 中。
我要使用 TableModelListener 吗?我怎样才能实现它而不需要再次重置 JTable 的模型。
这很可能类似于 Microsoft Access - 表格/查询的表单呈现。
我们将非常感谢您的回复和评论。
谢谢, 西里尔·H
I have this JTable having an AbstractTableModel as its model.
The initial contents are parsed to a two-dimensional array Object from a ArrayList generic to a Entity of the system. Also in the model, isCellEditable is overriden with respect to data integrity.
After setting the model, I have set some cell editor with specified swing objects.
My problem now is that. How could I fill-up the column[0] of the table once changes on an empty row occurs. Also, once updates happens to the empty row, another empty row will automatically be added to the JTable.
Am I going to use a TableModelListener? How could I implement it without resetting the model of the JTable again.
Most likely this is similar to Microsoft Access - Form presentation to tables/queries.
Your response and comment will be highly appreciated.
Thanks,
Cyril H
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
AbstractTableModel 不是表模型。您正在扩展 AbstractTableModel 来实现模型存储和其他需要实现的方法。
我只想使用 DefaultTableModel。它已经实现了这些方法,并提供了 addRow(...) 方法,允许您动态增加模型中的行数。
这是一种方法。每次单元格中的数据发生更改时,您都会检查整行以查看它是否已满。如果它是表中的最后一行,那么您只需调用 DefaultTableModel 上的 addRow(...) 方法即可添加另一行。
THe AbstractTableModel is not the tables model. You are extending AbstractTableModel to implement the model storage and other methods that need to be implemented.
I would just use the DefaultTableModel. It already implements these methods and it provides an addRow(...) method that allows you to dynamically increase the number of rows in the model.
That is one way. Every time the data in a cell changes you check the entire row to see if it is full. If it is the last row in the table, then you can just invoke the addRow(...) method on the DefaultTableModel to add another row.
好吧,首先,不要处理二维对象数组,而是处理 POJO 列表。
您可以在这里查看我的一个简单示例代码:
http://puces-samples.svn.sourceforge.net/viewvc/puces-samples/trunk/sessionstate-suite/sessionstate-sample/src/blogspot/puce/sessionstate /sample/ParticipantTableModel.java?revision=2&view=markup
您是否正在访问本地数据库?如果是,那么您可以直接在表模型中使用 JPA 实体。
如果您访问共享数据库,那么您最好使用 3 层架构。在这种情况下,您可能希望使用不公开 PK 的 DTO。
Well, first, don't work on 2-dimensional Object arrays, but on a list of your POJO.
You can have a look at one of my simple sample code here:
http://puces-samples.svn.sourceforge.net/viewvc/puces-samples/trunk/sessionstate-suite/sessionstate-sample/src/blogspot/puce/sessionstate/sample/ParticipantTableModel.java?revision=2&view=markup
Are you accessing a local DB? If yes, then you could use JPA entities directly in your table model.
If your accessing a shared DB, then you better of with a 3-tier architecture. You might want to use DTOs which don't expose the PK, in that case.