删除jtable(Empty Rows)中未使用的行?

时间:2016-02-01 20:42:02

标签: java swing jtable

有关删除jtable中未使用的行的问题我正在使用DefualtTableModel我的表已经有一些数据&当我更新它留下一些列为空以便稍后更新主题所以它们是空列..我想在保存数据之前用按钮删除主题..我实际上尝试了这段代码:

private void btn_ClearActionPerformed(java.awt.event.ActionEvent evt) {                                              
      table.setAutoCreateRowSorter(true); 

      TableRowSorter sorter = (TableRowSorter) table.getRowSorter();
      sorter.setRowFilter(new RowFilterImpl());                
}

我也尝试过这个:

private void btn_ClearActionPerformed(java.awt.event.ActionEvent evt) {
    table.setAutoCreateRowSorter(true);
    TableRowSorter sorter = (TableRowSorter) table.getRowSorter();
    sorter.setRowFilter(new RowFilter<TableModel, Integer>() {
        @Override
        public boolean include(RowFilter.Entry<? extends TableModel, ? extends Integer> entry) {
            boolean included = true;
            Object cellValue = entry.getModel().getValueAt(entry.getIdentifier(), 0);
            if (cellValue == null || cellValue.toString().trim().isEmpty()) {
                included = false;
            }
            return included;
        }
    });
}

上面的代码正在运行,但我不喜欢它,因为它会在过滤后重新调整行数,因此我想使用model.remove();条件对if执行某些操作..并且我想指定列例如第7栏和第7栏12并且只想删除指定列中的空行..

好的我试过这段代码:

for (int i = model.getRowCount() - 1; i >= 0; i--)
{
     Object col1 = model.getValueAt( i,model.getColumnCount() - 6);
     Object col2 = model.getValueAt( i,model.getColumnCount() - 11);

     if (col1 == null || col2 == null)
         model.removeRow(i);
}

我面临同样的问题,我发现下面的代码解决了这个问题所以我删除了它...我还发现它计算你选择或点击一行的时间,然后调整它的大小你点击的数量!

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
       int lastRow = -1;

       public void valueChanged(ListSelectionEvent e) {
            if (!e.getValueIsAdjusting()) {
               if (lastRow != -1) {
                  table.setRowHeight(lastRow, table.getRowHeight());
              }

              int row = table.getSelectedRow();
              table.setRowHeight(row, 23);
              lastRow = row;
         }
       }
   });

任何想法的人?

提前

thanx

1 个答案:

答案 0 :(得分:4)

创建一个循环以从模型中删除数据。

可能是这样的:

for (int i = model.getRowCount() - 1; i >= 0; i--)
{
    if (column?? == null && column?? == null)
        model.removeRow(i);
}
  

在table.setRowHeight()中添加了上面的问题;

那应该是原始问题的一部分。我们怎么知道你有自定义逻辑做一些奇怪的事情?

将来发布适当的SSCCE来证明问题所以我们不必猜测你在做什么。

  

我得到同样的问题,它调整行

然后删除监听器:

  1. 删除侦听器
  2. 删除行
  3. 添加监听器