How to Use Tables: Sorting and Filteringに示すように、RowFilter
を使用して、「モデルからエントリを除外して、ビューに表示されないようにします」。まさにゼロ列目に「G」を一致させるには、あなたのフィルタは次のようになります。このexampleに基づいて
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));
}
};
、以下の例では、ボタンを押すと、フィルタを切り替えます。

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();
}
});
}
}
私はすでにどれだけfilterTextとの完全な一致を持つテーブル内のエントリを比較することを教えて、このサイトを知っていますか? – user1104836