Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除JTable Java中的空行_Java_Swing - Fatal编程技术网

如何删除JTable Java中的空行

如何删除JTable Java中的空行,java,swing,Java,Swing,我正在从数据库中选择记录,它会在JTable中显示一些空记录,以及我无法使用表筛选记录的记录 图中有一些空记录 public ArrayList getUsers(){ ArrayList usersList=新的ArrayList(); Connection=getConnection(); String query=“从信息中选择*”; 声明我的国家; 结果集rs; 试一试{ myState=connection.createStatement(); rs=myState.executeQu

我正在从数据库中选择记录,它会在JTable中显示一些空记录,以及我无法使用表筛选记录的记录

图中有一些空记录

public ArrayList getUsers(){
ArrayList usersList=新的ArrayList();
Connection=getConnection();
String query=“从信息中选择*”;
声明我的国家;
结果集rs;
试一试{
myState=connection.createStatement();
rs=myState.executeQuery(查询);
用户;
while(rs.next()){
user=新用户(rs.getInt(“id”)、rs.getString(“fname”)、rs.getString(“lname”)、rs.getInt(“age”);
usersList.add(用户);
}
}
捕获(异常ep){
ep.printStackTrace();
}
返回用户列表;
}
我用下面给出的函数在JTable中填充这些记录

public void ShowUsersinJTable(){


    ArrayList<User> uList=getUsers();
    DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
    Object[] row=new Object[4];
    for(int i=0;i<uList.size();i++){


        row[0]=uList.get(i).getId();
        row[1]=uList.get(i).getFname();
        row[2]=uList.get(i).getLname();
        row[3]=uList.get(i).Age();
          model.addRow(row);
   }
}
public void ShowUsersinJTable(){
ArrayList uList=getUsers();
DefaultTableModel=(DefaultTableModel)jTable1.getModel();
Object[]行=新对象[4];

对于(int i=0;i,由于代码似乎正确,请尝试将代码更改为:

ArrayList<User> uList=getUsers();
DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
for(int i=0;i<uList.size();i++){
    Object[] row=new Object[4];

    row[0]=uList.get(i).getId();
    row[1]=uList.get(i).getFname();
    row[2]=uList.get(i).getLname();
    row[3]=uList.get(i).Age();
      model.addRow(row);
}

请告诉我它是否有效,这样我可以在需要时进一步帮助您

netbeans中jTable的默认行数是四行。因此,您可以通过转到jTable属性->模型->行来删除它

或者,可以在表中添加行之前将rowCount设置为零,如下所示:

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
model.setRowCount(0);

所以,您想只显示从数据库中获得的记录的行数?我想显示仅在数据库中的记录。它还显示一些空记录。您这样做似乎是对的,我也做了类似的事情,除了在添加新内容之前清除表外。我还尝试为每一行初始化一个新的行对象每一条新记录你能指出我应该在代码中的什么地方进行编辑吗?有必要在这里重新创建一个新数组吗?千万不要像OP那样尝试,但我猜JTableModel只是使用数组来创建自己的单元格,而不保留数组的引用。但这样似乎更安全。我使用一些旧代码来生成可能没有必要,但我从未尝试过如果您有
DefaultTableModel
,则删除所有行的最有效方法是
setRowCount(0)
。在添加数据之前删除所有行对我来说很有帮助。
for (int i = table.getRowCount() - 1; i >= 0; i--) {
    model.removeRow(i);
}
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
model.setRowCount(0);