JTable RowFilter显示错误的行

时间:2014-12-25 09:42:48

标签: java swing jtable rowfilter

我使用自定义类扩展RowFilter根据列中的布尔值过滤我的表

public class MyRowFilter extends RowFilter<Object, Integer> {

    @Override
    public boolean include(Entry entry) {

        return (boolean) entry.getValue(0));
    }
}

我将其分配给表格

TableRowSorter<TableModel> tableRowSorter = new TableRowSorter();
myRowFilter = new MyRowFilter(myTableModel);
tableRowSorter.setRowFilter(myRowFilter);
myTable.setRowSorter(platformTableRowSorter);

但我在表单上得到的只是第一个N(时间量include()返回true)myTable的行而不是include()返回true的行。

什么会导致这种行为?

2 个答案:

答案 0 :(得分:0)

String table_event = table_job.getModel().getValueAt(table_job.
                          convertRowIndexToModel(row), 0).toString());

答案 1 :(得分:0)

&#13;
&#13;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.RowFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class JTableFilterDemo {
  public static void main(String[] args) {
    Object[][] data = { { "A", 5 }, { "B", 2 }, { "C", 4 }, { "D", 8 } };
    String columnNames[] = { "Item", "Value" };
    TableModel model = new DefaultTableModel(data, columnNames) {
      public Class<?> getColumnClass(int column) {
        return getValueAt(0, column).getClass();
      }
    };
    JTable table = new JTable(model);

    RowFilter<Object, Object> filter = new RowFilter<Object, Object>() {
      public boolean include(Entry entry) {
        Integer population = (Integer) entry.getValue(1);
        return population.intValue() > 3;
      }
    };

    TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
    sorter.setRowFilter(filter);
    table.setRowSorter(sorter);
    JScrollPane scrollPane = new JScrollPane(table);
    JFrame frame = new JFrame("Filtering Table");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(scrollPane);
    frame.setSize(300, 200);
    frame.setVisible(true);
  }
}
&#13;
&#13;
&#13;

请参阅此代码