我正在製作一個GUI,它包含一個JPanel,在JPanel內部有一個JTable,我想要做的是:當我點擊一個按鈕時,它們都出現了(因爲我' m使用CardLayout)。代碼:Java GUI JTable'刷新'
private void teGjithaButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
parentPanel.setVisible(true);
parentPanel.removeAll();
parentPanel.add(tgjPanel);
parentPanel.repaint();
parentPanel.revalidate();
listAllCurtains();
} catch (SQLException ex) {
Logger.getLogger(MainBrillant.class.getName()).log(Level.SEVERE, null, ex);
}
而對於listAllCurtains()的代碼:
public void listAllCurtains() throws SQLException {
DefaultTableModel deftm = (DefaultTableModel) allTable.getModel();
if (deftm.getRowCount() != 0) {
deftm.setRowCount(0);
}
stm = (Statement) conn.createStatement();
ResultSet rs = stm.executeQuery("select * from customerregister.curtain inner join curtainrel on curtain.code = curtainrel.curtainCode;");
while (rs.next()) {
String shifra = rs.getString("code");
String ngjyra = rs.getString("color");
String emri = rs.getString("name");
double cmimi = rs.getDouble("price");
double sasia = rs.getDouble("amount");
allCurtains.add(new Curtain(shifra, ngjyra, emri, cmimi, sasia));
}
Object[] row = new Object[5];
for (int i = 0; i < allCurtains.size(); i++) {
row[0] = allCurtains.get(i).getShifra();
row[1] = allCurtains.get(i).getEmri();
row[2] = allCurtains.get(i).getNgjyra();
row[3] = allCurtains.get(i).getCmimi();
row[4] = allCurtains.get(i).getSasia();
deftm.addRow(row);
}
}
的問題是,當我再次單擊該按鈕沉綿有這部分的代碼,以確保數據的不重複:
if (deftm.getRowCount() != 0) {
deftm.setRowCount(0);
}
每次按鈕被點擊時,它仍然繼續向表格中插入相同的數據。我無法弄清楚爲什麼會發生這種情況,我非常感謝你的幫助。
退出重新發布相同的問題。你被要求在你的最後一個問題中發佈一個「可運行的例子」。 – camickr