Java Jtable在插入新数据后不会刷新
在这里,我试图从jtable搜索prodcuts。但问题是,新的搜索结果被添加到以前的搜索结果下,即使我使用了fireTableDataChanged方法,也没有更新jtable 这是我的密码Java Jtable在插入新数据后不会刷新,java,swing,jtable,Java,Swing,Jtable,在这里,我试图从jtable搜索prodcuts。但问题是,新的搜索结果被添加到以前的搜索结果下,即使我使用了fireTableDataChanged方法,也没有更新jtable 这是我的密码 @Override public void actionPerformed(ActionEvent e) { System.out.println("Im in createIban with the values: " +comboBox.getSelected
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Im in createIban with the values: " +comboBox.getSelectedItem()+ " and " + textField.getText());
if(comboBox.getSelectedItem().toString().equals("Serial No"))
{
System.out.println("0");
String cmb=textField.getText().toString();
try{
con= (Connection) Connect.ConnectDB();
String sql="select * from stocks where serial=?";
pst = (PreparedStatement) con.prepareStatement(sql);
pst.setString(1, cmb);
rs=pst.executeQuery();
model = (DefaultTableModel) jt.getModel();
model.fireTableDataChanged(); **//Here i used the method**
while(rs.next()) {
dt = rs.getString("date");
mdt = rs.getString("mdate");
srn = rs.getString("serial");
mod = rs.getString("model");
cap = rs.getString("capacity");
inv = rs.getString("invoice");
amt = rs.getString("amount");
int i;
for(i=0; i<model.getRowCount(); i++){
{}
}
jt.repaint();
model.fireTableDataChanged(); **//Here i used the method**
model.addRow(new Object[]{i+1,mod,cap,dt,mdt,srn,inv,amt});
JOptionPane.showMessageDialog(this,"Succesfully stored","User",JOptionPane.INFORMATION_MESSAGE);
}
} catch (ClassNotFoundException ex) {
Logger.getLogger(ViewStock.class.getName()).log(Level.SEVERE, null, ex);
} catch(SQLException ex){
System.out.print(ex);
}
我终于找到了一个解决方案,它将是非常有用的人谁寻求这种类型的问题的答案,所以我想在这里张贴我的代码 只需创建一个名为reset的方法 里面
DefaultTableModel model;
model = (DefaultTableModel) jtable1.getModel();
void reset()
{
for(int i=model.getRowCount()-1; i>=0;i--)
{
model.removeRow(i);
}
}
并且可以在任何地方调用此重置方法,使用简单代码都可以,祝您好运您的ActionListener代码不应该调用model的fireTableDataChanged方法。相反,您的TableModel本身应该在其addRow中调用此方法。。。方法因为您使用的是DefaultTableModel,所以您知道它的addRow。。。方法已经做到了这一点,这表明您仍然需要进行一些调试,以找出为什么事情不起作用。因此您说DefaultTableModel不需要任何额外的方法来更新表?那么为什么我的表不会自动更新。我如何调试它。使用调试程序或日志来查看是否确实从数据库中提取了数据,以及数据是否已被提取实际上被添加到表模型中。确保您使用的是实际显示的JTable中的模型,而不是其他表格,。。。你还有更多的工作要做。此外,在这里发布代码时,请努力确保您的代码格式正确。你随意使用缩进使你很难完全理解你的代码。我认为你能比调试更好地帮助我。所以我将解释我的代码,这没什么..有一个jtable,其中包含产品详细信息数据库中的所有产品,和一个搜索按钮。当我按下搜索按钮时,一个带有组合框和文本字段的自定义对话框和一个提交按钮将出现,我的代码从这里开始,当我点击提交按钮。我自己,如果你能创建并发布一个或,一个最小的,即,非常小的程序,我们可以运行不变,并为我们显示你的错误,我会帮助你更好。