- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我第一次使用 JTable。我通过 DAO 模式从数据库中提取数据,将其保存在一个集合中,读取该集合并用它填充我的 JTable。但是,我也在使用 MVC 模式,并且不知道如何正确更新我的 View ,因此添加到 JTable 的数据实际上会显示出来。我已经阅读了有关通过 Observer 或 TableModelListener 执行此操作的方法(我不打算讨论使用哪个)。但我找不到一个完整的实现或工作 TableModelListener 的深入解释,并且 Oracle 文档从来没有对我有太大帮助。
有人可以向我解释如何正确实现 TableModelListener,以便在所有数据写入 JTable 后更新我的 View 吗?
这是我的 AbstractTableModel 类:
public class AbstractTableModel extends DefaultTableModel{
/**
*
*/
private static final long serialVersionUID = -7354466553311529134L;
private static Logger logger = Logger.getLogger(AbstractTableModel.class);
private static String col[] = { "Table", "UpdateCols", "AlterAuth",
"DeleteAuth", "IndexAuth", "InsertAuth", "SelectAuth", "UpdateAuth" };
private static DefaultTableModel tableModel = new DefaultTableModel(null, col);
private static JTable table = new JTable(tableModel);
public static JTable updateTable(DatenbankDaoImpl db) throws SQLException, IOException {
table.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
logger.debug(e);
}
});
while (table.getRowCount() > 0) {
((DefaultTableModel) table.getModel()).removeRow(0);
}
for (DatenbankBean db1 : db.getDatenbank()) {
String table = db1.getTable();
String updatecols = db1.getUpdatecols();
String alterauth = db1.getAlterauth();
String deleteauth = db1.getDeleteauth();
String indexauth = db1.getIndexauth();
String insertauth = db1.getInsertauth();
String selectauth = db1.getSelectauth();
String updateauth = db1.getUpdateauth();
Object[] data = {table, updatecols, alterauth, deleteauth, indexauth, insertauth, selectauth, updateauth};
tableModel.addRow(data);
logger.debug("AbstractTableModel: " + data.toString());
}
// table.repaint();
return table;
}
}
最佳答案
这篇文章怎么样,它解释了它的每个部分并且也可以执行?
Oracle on How to Write a Table Model Listener
以下是基本部分:
实例化后,每个 JTable 对象都会传递一个表模型对象来管理它显示的数据。默认情况下,如果未指定自定义 TableModel 对象,JTable 对象将继承 DefaultTable 对象,但默认情况下,此模型仅管理字符串。要处理对象、执行计算或从数据库或其他程序检索数据,您必须设计自己的自定义 TableModel 对象,该对象实现 TableModel 接口(interface)。有关详细信息,请参阅创建表模型。
要检测表模型对象管理的数据的更改,JTable 类需要实现 TableModelListener 接口(interface),调用 addTableModelListener() 来捕获事件,然后重写 tableChanged() 来响应监听器事件。有关详细信息,请参阅监听数据更改
关于java - JTable 的 TableModelListener 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44045408/
我有一个使用jTable(使用netbeans)的数据库应用程序,我已经向jTable添加了一个表模型监听器,因此当我编辑jTable时,它也会编辑数据库(MySQL)。然而,当用户单击 jTable
第一次在这里发帖,如有错误请见谅 我正在处理一个 JTable,其中的列数据必须验证一些参数,例如: 第 3 列值 > 30 第 4 列值 > 10 第 5 列值 > 4 前 2 列也是“自动”填充的
我正在使用java swing开发一个应用程序,其中有一个jTable,我从数据库导入数据。我想直接从jTable更新我的数据库。因此,根据我找到的代码(抱歉我不记得链接),我设法使用TableMod
我在运行时在表模型中实现了“addTableModelListener”,但我想再创建一个控件来删除它。我在Google上搜索过,但没有找到任何合适的逻辑来实现删除表模型监听器。 请帮助我实现 rem
我有一个 Jtable,TableModelListener 正在监听 实现者 private void anadeListenerAlModelo() { tabla.getModel().
什么时候应该创建自己的 TableModelListeners 和 DataModelEvents? 我知道 DefaultTableModel、AbstractTableModel 和 TableM
我正在创建一个 UI 类,所有内容都将在其中运行(另一个类将作为运行器)。在这个类中,我有一个表,该表应该在更改时创建 TableModeEvents,但它似乎没有这样做。 每当我对表格进行任何操作时
我在将 TableModelListener 添加到 AbstractTableModel 时遇到了问题。程序停止工作,JFrame 不响应任何按钮单击,甚至关闭 JFrame。 我想要的是当 myT
这是我第一次使用 JTable。我通过 DAO 模式从数据库中提取数据,将其保存在一个集合中,读取该集合并用它填充我的 JTable。但是,我也在使用 MVC 模式,并且不知道如何正确更新我的 Vie
我对 Java 很陌生,我一直在使用 jTable 开发 GUI。我有一个 jTable,我想从中跟踪更改,因此我动态地向其 TableModel 添加了一个 TableModelListener。但
我不确定为什么这是递归的。 jTable1.getModel().addTableModelListener(new TableModelListener() { public void table
我目前正在使用两个 JTable。他们每个人都有自己的自定义 TableModel。 在第一个 JTable 中,我有可以选择的项目(复选框)。第二个开始是空的。当我检查第一个表中的一行时,该行的 b
我创建了一个TableModelListener来监听特定的列。具体来说,列2,3,4,5。这样,当 2-5 中的任何列有值或 not null 时,它会将值存储添加到 BigDecimal 值中以获
我想使用 TableModelListener 将第二列设置为 JComboBox 编辑器。还想根据第一列中选定的组合框更改第二列中组合框的模型。在这里,我实现了一个监听第一列的监听器。 priv
我有一个简单的程序,可以使用 JTable 显示数据库的表。我有一个组合框,列出所有可用的表,还有一个 actionListener,每次更改时将模型设置为表。这按预期工作。我遇到的问题是,当选择一个
TableModelListener(第 87 行/HERE-1)是否会干扰我的 JTable 的 addRow 方法(第 139 行,HERE-2)?如果是这样我该如何解决? 此代码可以编译,但当我
我的 JTable 有一个列,其中包含用于维护状态的 JCheckBox。当我不实现 TableModelListener 并运行程序时,数据将显示在 JTable 中。但是当我运行实现了 Table
我是一名优秀的程序员,十分优秀!