Java JTable-显示相同的项目
正如你所看到的,当我尝试一个新的项目得到了这样的重复。我该怎么办 我写了一个Java JTable-显示相同的项目,java,swing,jtable,awt,Java,Swing,Jtable,Awt,正如你所看到的,当我尝试一个新的项目得到了这样的重复。我该怎么办 我写了一个JTableredisplayer类。所以有一个添加按钮到表中。单击该按钮时,它应为exp I added 1。在我添加2之后。应仅显示1 2。不是那样的 jTable1.removeAll(); jTable1.revalidate(); try{ Class.forName("com.mysql.jdbc.Driver"); } catch(Cl
JTable
redisplayer类。所以有一个添加按钮到表中。单击该按钮时,它应为exp I added 1。在我添加2之后。应仅显示1 2。不是那样的
jTable1.removeAll();
jTable1.revalidate();
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e){
System.err.println("Driver yok");
return;
}
Connection con=null;
try{
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/kutuphane","root","");
System.out.println("Veritabnı baglandıldı");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("SELECT * FROM kisiler ");
while(rs.next()){
model=(DefaultTableModel) jTable1.getModel();
model.insertRow(i,new Object[]{rs.getString("ADSOYAD"),rs.getInt("TELEFON"),rs.getInt("TCNO"),rs.getString("ADRES") } );
i++;
}
jTable1.setModel(model);
jTable1.revalidate();
stmt.close();
rs.close();
}
catch(SQLException e){
System.out.println("Veritabanı baglanmadi");
e.printStackTrace();
}
finally{
if(con!=null)
try{
con.close();
}
catch(SQLException e){
e.printStackTrace();
}
首先,去掉代码顶部的这一行
jTable1.removeAll(); //DELETE THIS LINE!!
您可能希望它删除表模型中的所有行,但实际情况并非如此
接下来,将while
循环及其后面的两行替换为:
model = new DefaultTableModel();
while(rs.next()){
model.addRow(new Object[]{
rs.getString("ADSOYAD"),
rs.getInt("TELEFON"),
rs.getInt("TCNO"),
rs.getString("ADRES")}
);
}
jTable1.setModel(model);
请注意,我使用的是
addRow
而不是insertRow
,因此可能不再需要I
。您应该编辑您的帖子,删除指向图像的链接,并将其包含在问题中。也不要使用太多的大写字母,因为这会使阅读变得困难。这是我的问题,谢谢。请让我知道你不明白什么?我将尝试精确解释不要在while循环中初始化模型,它将创建新模型,直到rs。next()
有效。首先,您应该停止像我们一样叫喊。谢谢,但在model=new DefaultTableModel()之后;此jtable将消失。更改不会出现。我认为您需要在开始添加新行之前清除旧行。这就是我试图通过重新创建模型来实现的目标。但是您也可以尝试这样做:while(model.getRowCount()>0)model.removeRow(0);在开始插入新行之前,请确保将i设置为零。只需使用model.setRowCount(0)
从DefaultTableModel
中删除数据行即可。