- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Java Swing 中更新 JTable 时遇到问题。
我想要显示的数据每秒变化几次,我正在寻找一种有效的方法来更新 JTable 中的数据。
我使用方法 setModel() 来更新数据,它有效,但它有两个缺点:
如果用户调整标题中表格列的大小,那么他将得到大约 10 个异常(我认为是因为该模型不再可用,因为它每秒更改几次)
每次数据(以及 TableModel)更改时,调整大小的列(以像素为单位)的长度信息都会丢失。
对于 TableModel,我使用我自己的模型 ResultSetTableModel,它扩展了 AbstractTableModel。此 ResultSetTableModel 具有方法 setResultSet(ResultSet rs)
并覆盖方法 getValueAt(x,y)
...
正如我所说,如果我将一个新的 ResultSet 设置到我的 ResultSetTableModel,然后通过方法 setModel(resultSetTableModel) 将它添加到 JTable,它可以工作,但它有我所说的 2 个缺点。
所以我认为我可以使用 fireTableDataChanged() 方法解决这个问题,但我尝试了很多可能性但没有得到任何改变。
你知道我必须在哪里放置火器吗?
目前我尝试这样做,但它不起作用,我不知道为什么:
private ResultSetTableModel resultSetTableModel;
private DataFetcher dataFetcher;
private JTable table;
...
//works fine
public void initaialUpdateTable() {
resultSetTableModel = new CachingResultSetTableModel(dataFetcher.getRS());
table.setModel(resultSetTableModel);
}
//does not work
public void updateTable(){
resultSetTableModel.setResultSet(dataFetcher.getRS());
resultSetTableModel.fireTableDataChanged();
}
如果我每次都调用 initaialUpdateTable(),它工作正常,但我希望只是数据发生变化而不是整个模型
感谢您的回答
迈克尔
最佳答案
but i want that just the data changes and not the whole model
嗯,我怎么能...,没有只有一个...
1) 你在GUI中可以看到的东西是TableView
,只有表现层,所有数据总是存储在TableModel
2) 如果你没有声明任何TableModel
,这并不意味着不存在,仍然存在DefaultTableModel
3) 你的 private ResultSetTableModel resultSetTableModel;
必须扩展 AbstractTableModel
,
4) 如果您要阻止任何 fireXxxXxxChanged();
,则不会有任何更改返回到 TableView
,
5) 基础知识 here , 开始于 fireTableCellUpdated(row, col);
编辑
关于 TableModels 的更多信息 here , here或搜索 ResultSetTableModel
、TableFromDatabase
关于java - fireTableDataChanged 对 JTable 没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7210532/
我即将使用 Eclipse 创建一个使用 JTable 的 Java 程序。我所做的是创建 JTable,将其与一个扩展 AbstractTableModel 的类(我称为 ResultsTableM
我有一个合理简单的 JTable,我想每秒更新一次。 为此,我发现您应该使用 fireTableDataChanged(),但是,经过多次尝试后我仍然无法让它工作。 import java.awt.e
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
fireTableDataChanged 似乎对我不起作用: 主要类: tblBookOfMonth = new JTable(tableModel); tableModel.setD
添加一行后,我预计 JTable 会被刷新。不幸的是事实并非如此。 我的代码是这样的: 如何添加行: JButton btnDodaj = new JButton("Dodaj");` panel.a
我在向 jtable 添加数据时遇到困难。它首先从集合中加载数据,使用 jtextfield 添加新数据,当然数据已添加到调试过的集合中,但我无法在 jtable 中显示新添加的日期。我已经尝试了所有
我有两个表,当单击该记录时,我尝试将一个表中的记录中的数据添加到另一个表中。 当前,当我单击表格时,值会添加到 clickedData,但该数据不会在表格中刷新。 这是我的代码: import jav
我有一个 JTable 可以跟踪一个人在餐厅等待就座的时间。我的问题是每一秒,当计时器“滴答作响”时,一行上的选择被删除。换句话说,如果您单击一行,它会以蓝色背景和轮廓突出显示,但是当计时器滴答作响时
它从 ThingSpeak 下载数据并显示在 jtable 中。我创建了一个“刷新”按钮,它将下载最新数据并显示在现有的 GUI 表中。 获取最新数据...工作 存储在列表/数组中...工作 更新 j
我在 Java Swing 中更新 JTable 时遇到问题。 我想要显示的数据每秒变化几次,我正在寻找一种有效的方法来更新 JTable 中的数据。 我使用方法 setModel() 来更新数据,它
我的程序中有一个 JTable。我想在单击 JButton 后更新它。我写了这个: DefaultTableModel myTable = new DefaultTableModel(celDatas
到目前为止,我对 JTable 的定义如下: JTable table = new JTable(model) { @Override public Compo
我是 still挣扎于JTable应该会自动更新。 情况如下:我实例化 MyTable (扩展 JTable ),并将其设置在我的 UI 类 ( MyView ) 中。 MyTable类将 UI 类和
我使用的 JTable 的 TableModel 通过 fireTableDataChanged() 定期更新。这些更改通常非常小,例如添加或修改的单行,但我无法预测它会在哪里发生。 有没有办法知道在
我已经多次搜索和看到这个问题,但没有一个解决方案有效。 我有一个 AbstractTableModel,我已经对其进行了扩展并称为 AccountTableModel。代码是这样的。 import I
我有一个扩展 AbstractTableModel 的 jtable。我注册了两个 ListSelectionListener,它们获取所选单元格的行和列。但是,当我调用模型中定义的 updateDa
本文整理了Java中com.tc.admin.common.XObjectTableModel.fireTableDataChanged()方法的一些代码示例,展示了XObjectTableModel
添加一行并调用 fireTableRowInserted() 还是添加所有行然后调用 fireTableDataChanged() 是个好主意? 最佳答案 如果您所做的只是添加新行,最好添加所有行,然
我是一名优秀的程序员,十分优秀!