在 Java Swing 中填充空表
我想要一个 JFrame 窗口,其中包含一个初始空表,例如 10 列。然后,由鼠标单击生成的操作事件应使用 10 个或更少项目的列表填充表,并将表中已使用的行保留为空。这应该怎么做呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我想要一个 JFrame 窗口,其中包含一个初始空表,例如 10 列。然后,由鼠标单击生成的操作事件应使用 10 个或更少项目的列表填充表,并将表中已使用的行保留为空。这应该怎么做呢?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
我建议通过子类化
AbstractTableModel
。这样您就可以使用任何合适的集合(例如java.util.List
)“支持”您的模型。当 ActionEvent 被触发时,您通常会修改底层集合,然后触发TableModelEvent
以导致JTable
被重新绘制。I'd recommend defining your own
TableModel
implementation by subclassingAbstractTableModel
. That way you can "back" your model with any suitable collection (e.g.java.util.List
). When an ActionEvent is fired you would typically amend your underlying collection and then fire aTableModelEvent
to cause theJTable
to be repainted.为此,您应该使用所需的数据创建一个 DefaultTableModel,并且对于空行,您可以使用 null 值填充对象表。
使用一些代码就更简单了:
因为我不知道你的数据来自哪里,我假设它来自一个少于 10 行的矩阵:
你必须使用以前的数据和创建一个新矩阵>null 单元格用于完成表格。最后你会得到这样的东西。
这样你就会有一个 10x2 的矩阵来填充你的表格。现在您可以更新您的 DefaultTableModel
就是这样。我认为您创建对象矩阵没有问题。
For this, you should create a DefaultTableModel with the data you want, and for the blank lines, you fill the object table with null values.
It´s simpler with some code:
As I don't know where you data come from, I'll presume it come from a matrix with less than 10 rows:
you have to create a new matrix with your previous data and the null cells for completion of the table. In the end You'll have something like this.
This way you'll have a 10x2 matrix that will fill your table. Now you can update your DefaultTableModel
And that's it. I presume you don't have problems to create your Object matrix.
除了按照 Adamski 的说明创建自己的 TableModel 之外,您还可以使用 javax.swing.table.DefaultTableModel。
它有一个构造函数,该构造函数将列数和行数作为参数和管理数据的方法(
addRow
、insertRow
、setDataAt
、.. .)。我更喜欢创建一个自己的 TableModel,除非它用于非常简单的程序/功能。
Besides creating your own TableModel as explained by Adamski, you can use the javax.swing.table.DefaultTableModel directly.
It has a constructor which takes the number of columns and rows as argument and methods to manage the data (
addRow
,insertRow
,setDataAt
, ...).I would prefer creating an own TableModel, unless it's for a very simple program/functionality.