gpt4 book ai didi

java - JTable 设置模型并保留列格式(宽度、对齐方式等)

转载 作者:行者123 更新时间:2023-11-29 03:49:02 25 4
gpt4 key购买 nike

这是对JTable 绑定(bind)的一次脑洞大开的体验。这就是我所做的。我创建了一个 JTable,其中的列设置为指定的宽度,使用 renderers 对其进行格式化,并在其上添加了一些代码。 但是当我尝试将它绑定(bind)到模型时,所有列都被模型的字段替换。有没有办法正确绑定(bind)它?

我正在避免循环,因为数据库中有 10 万多条记录。我正在尝试使用其他方法,例如 BeansBindingEntityManager 但我不知道如何更改数据源(这就是我选择将其绑定(bind)到model),因为我正在测试它以备份数据库,并很快将在新服务器上实现。

这就是我在 .Net 中所做的,我通常创建一个 datagridview 并将其绑定(bind)到数据集并且它工作正常。但我不能将它应用于 java。我需要您的意见,了解如何在可以处理 100 多万条记录的 Java 中做到这一点。

    PreparedStatement pst = conn.prepareStatement("SQL Query here");
ResultSet rs = pst.ExecuteQuery();
jTable1.setModel(DbUtils.resultSetToTableModel(rs));

上面的代码工作正常,但我的一个非常非常大的问题是它用模型中的列覆盖了我的格式化列。

请帮我解决这个问题。

最佳答案

根据评论,您可以尝试将以下方法添加到 DbUtils 中:

public static void updateTableModelData(DefaultTableModel tModel, ResultSet rs) 
throws Exception {
tModel.setRowCount(0);
ResultSetMetaData metaData = rs.getMetaData();

while (rs.next()) {
Vector newRow = new Vector();
for (int i = 1; i <= numberOfColumns; i++) {
newRow.addElement(rs.getObject(i));
}
tModel.addRow(newRow);
}
}

然后你的代码会变成:

PreparedStatement pst = conn.prepareStatement("SQL Query here");
ResultSet rs = pst.ExecuteQuery();
DbUtils.updateTableModelData((DefaultTableModel) jTable1.getModel(), rs);

关于java - JTable 设置模型并保留列格式(宽度、对齐方式等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599474/

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