我正在开展一个学校项目,我正在建立一个小程序..
我遇到了一个我无法解决的问题,我有2个班级......
第一个类我非常简单,它有返回表列的字符串数组的方法和返回日期的Object ..
第二个类中有一些方法...它们都返回一个组件,它是一个表,并且该表用于不同的类来显示例如客户事务等。
一切正常但桌子没有更新?
我已尝试过firetablechange etcetc ....但没有任何工作......
头等舱:
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
}
}
答案 0 :(得分:1)
DefaultTableModel m=new DefaultTableModel (td.dataTable(custID, sql), td.colNamesTable(custID, sql));
table.setModel(m);
您可以重置表的模型,或者您必须创建一种智能方法来清除表中的更改并相应地插入/更新/删除相应的行。
此外,我还会为问题添加swing标签。
答案 1 :(得分:1)
只需使用new timer(set refresh time,actionlisterner)
然后告诉d actionlisterer在指定的时间做什么。但是退回的是,如果刷新太快,它将返回一个说明连接太多的异常。但它确实有效。