Verwenden Sie wie in How to Use Tables: Sorting and Filtering gezeigt eine RowFilter
, um "Einträge aus dem Modell herauszufiltern, damit sie nicht in der Ansicht angezeigt werden." Passend „G“ genau in der Spalte Null, Ihre Filter könnten wie folgt aussehen:
final RowFilter<TableModel, Integer> filter = new RowFilter<TableModel, Integer>() {
@Override
public boolean include(RowFilter.Entry<? extends TableModel, ? extends Integer> entry) {
return "G".equals(entry.getStringValue(0));
}
};
Basierend auf diesen example Drücken der Taste im Beispiel unten die Filter schaltet.
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
/** https://stackoverflow.com/a/37114447/230513 */
public class JTableFilterDemo {
private static TableRowSorter<TableModel> sorter;
private Object[][] data = {{"G"}, {"KG"}, {"XG"}, {"Y"}, {"Z"}};
private String columnNames[] = {"Item"};
private TableModel model = new DefaultTableModel(data, columnNames) {
@Override
public Class<?> getColumnClass(int column) {
return String.class;
}
};
private JTable table = new JTable(model);
public JTableFilterDemo() {
table.setPreferredScrollableViewportSize(table.getPreferredSize());
sorter = new TableRowSorter<>(model);
table.setRowSorter(sorter);
final RowFilter<TableModel, Integer> filter = new RowFilter<TableModel, Integer>() {
@Override
public boolean include(RowFilter.Entry<? extends TableModel, ? extends Integer> entry) {
return "G".equals(entry.getStringValue(0));
}
};
JScrollPane scrollPane = new JScrollPane(table);
JFrame frame = new JFrame("Filtering Table");
frame.add(new JButton(new AbstractAction("Toggle filter") {
@Override
public void actionPerformed(ActionEvent e) {
if (sorter.getRowFilter() != null) {
sorter.setRowFilter(null);
} else {
sorter.setRowFilter(filter);
}
}
}), BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(scrollPane);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JTableFilterDemo jtfd = new JTableFilterDemo();
}
});
}
}
ich bereits diese Website wissen, sagen Sie mir nur, wie die Einträge in der Tabelle mit dem filterText mit voller Anpassung zu vergleichen? – user1104836