【问题标题】:JTable - same items displayedJTable - 显示相同的项目
【发布时间】:2016-11-08 10:39:05
【问题描述】:

正如您在尝试新项目时看到的那样重复。我该怎么办?

我写了一个JTable redisplayer 类。所以有一个添加按钮到表格。当单击该按钮时,它应该是 exp 我添加了 1。在我添加 2 之后。应该只显示 1 2。不是 1 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();
    }

【问题讨论】:

  • 您应该编辑您的帖子并删除图片链接并将其包含在您的问题中。也不要使用这么大写的单词,因为它很难阅读。
  • i.stack.imgur.com/UGWZE.png 这是我的问题,谢谢
  • 伙计们请让我知道你不明白什么?我会尽量解释清楚
  • 不要在while循环中初始化model,它将创建新模型直到rs.next()有效..
  • 首先你应该停止像我们一样大喊大叫..

标签: java swing jtable awt


【解决方案1】:

首先,去掉代码顶部的这一行

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

【讨论】:

  • 谢谢,但是在 model = new DefaultTableModel();这个 jtable 消失了。没有出现更改。
  • 我认为您需要在开始添加新行之前清除旧行。这就是我试图通过重新创建模型来实现的目标。但你也可以试试这个:while(model.getRowCount()>0) model.removeRow(0);还要确保在开始插入新行之前将 i 设置为零。
  • 只需使用model.setRowCount(0)DefaultTableModel 中删除数据行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-21
  • 2019-04-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多