gpt4 book ai didi

java - JTable 的 TableModelListener 如何工作?

转载 作者:行者123 更新时间:2023-11-30 06:43:16 25 4
gpt4 key购买 nike

这是我第一次使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com