gpt4 book ai didi

java - 如何用 2 个不同的类刷新 Jtable?

转载 作者:行者123 更新时间:2023-11-29 09:09:46 27 4
gpt4 key购买 nike

我正在开展一个学校项目,我正在其中构建一个小程序..

我遇到了一个无法解决的问题,我有 2 节课...

第一个类非常简单,它具有返回表列的字符串数组的方法和返回日期的对象..

第二个类中有一些方法...它们都返回一个表组件,该表在不同的类中使用以显示例如客户交易等。

一切正常,但表格没有更新?

我已经尝试了 firetablechange 等所有方法...但没有任何效果...

头等舱:

import java.sql.ResultSetMetaData;

public class tableData extends CustFunk {

public String[] colNamesTable(long custID, String query) {
ResultSetMetaData rsmd = null;
String[] colNames = null;

try {

resultSet = statement.executeQuery(query);
rsmd = resultSet.getMetaData();
colNames = new String[rsmd.getColumnCount()];

for (int j = 0; j < rsmd.getColumnCount(); j++) {

colNames[j] = rsmd.getColumnName(j + 1);
}
} catch (Exception e) {
e.printStackTrace();
}

return colNames;
}

public Object[][] dataTable(long custID, String query) {

ResultSetMetaData rsmd = null;
Object[][] data = null;

try {

resultSet = statement.executeQuery(query);

rsmd = resultSet.getMetaData();

int rows = 0;
while (resultSet.next()) {
rows++;
}

resultSet.beforeFirst();
data = new Object[rows][rsmd.getColumnCount()];

for (int i = 0; i < rows; i++) {
resultSet.next();
for (int j = 0; j < rsmd.getColumnCount(); j++) {
data[i][j] = resultSet.getObject(j + 1);
}

}
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
}

第二课

public class TableClass {

private JTable table;
private tableData td;

public Component displCustAccInfo(long custID, int x, int y, int width,
int height) {
td = new tableData();

String sql = "SELECT accounts.Account_Name, accounts.Saldo, "
+ "useraccounts.Account_NR"
+ " from Accounts "
+ "INNER JOIN useraccounts on accounts.Account_NR=useraccounts.Account_NR"
+ " AND useraccounts.Kunde_id=" + custID + ";";

table = new JTable(td.dataTable(custID, sql), td.colNamesTable(custID,
sql)) {

public boolean isCellEditable(int row, int column) {
return false;
}
};

//table.tableChanged(new TableModelEvent(table.getModel()));

table.setFont(new Font("Lucida Grande", Font.PLAIN, 14));
table.setBackground(UIManager.getColor("CheckBoxMenuItem.selectionBackground"));
table.setForeground(Color.WHITE);
table.setBounds(x, y, width, height);

return table;
}
}

private class BtUpdateActionListener implements ActionListener {

public void actionPerformed(ActionEvent arg0) {
and from my customer GUI i call the method:
TableClass
tc = new TableClass();
tc.displCustAccInfo(custID, 154, 550, 357, 91
}
}

最佳答案

DefaultTableModel m=new DefaultTableModel (td.dataTable(custID, sql), td.colNamesTable(custID, sql));

table.setModel(m);

您可以重置表的模型,或者必须创建一种智能方法来检查表中的更改并相应地插入/更新/删除适当的行。

此外,我会为问题添加 Swing 标签。

关于java - 如何用 2 个不同的类刷新 Jtable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5965067/

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