import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.RowFilter; import javax.swing.SwingUtilities; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableRowSorter; public class Tabellensuche { TableRowSorter sorter; private JTable table; public Tabellensuche() { init(); } private void init() { Object[] header = { "Nr", "Vorname", "Name", "Job" }; Object[][] data = { { "3", "Karl", "Meier", "Chef" }, { "2", "Paul", "Schmitz", "Azubi" }, { "1", "Fritz", "Kunze", "Geselle" }, { "4", "Heinz", "Hinze", "Meister" }, { "5", "Fritz", "Brecht", "Hausmeister" } }; DefaultTableModel model = new DefaultTableModel(data, header); JFrame frame = new JFrame("Tabellensuche"); table = new JTable(model); table.setShowGrid(true); table.setGridColor(Color.BLACK); createRowSorter(model); frame.add(new JScrollPane(table), BorderLayout.CENTER); JButton searchButt = new JButton("Suche"); searchButt.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { search(); } }); JButton resetButt = new JButton("Zur\u00FCcksetzen"); resetButt.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { createRowSorter((DefaultTableModel) table.getModel()); } }); JPanel buttPanel = new JPanel(new FlowLayout()); buttPanel.add(searchButt); buttPanel.add(resetButt); frame.add(buttPanel, BorderLayout.SOUTH); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } public void search() { JPanel panel = new JPanel(new FlowLayout()); JCheckBox cb = new JCheckBox("Selektive Suche"); panel.add(cb); String text = JOptionPane.showInputDialog(panel); if (cb.isSelected()) { sorter.setRowFilter(RowFilter.regexFilter(text)); for (int i = 0; i < table.getRowCount(); i++) { for (int j = 0; j < table.getColumnCount(); j++) { System.out.println(table.getValueAt(i, j)); } } } else { DefaultTableModel model = (DefaultTableModel) table.getModel(); for (int i = 0; i < model.getRowCount(); i++) { for (int j = 0; j < model.getColumnCount(); j++) { if (model.getValueAt(table.convertRowIndexToModel(i), table.convertColumnIndexToModel(j)).toString() .indexOf(text) != -1) { Rectangle r = table.getCellRect(i, 0, false); table.scrollRectToVisible(r); table.changeSelection(i, j, true, false); for (int k = 0; k < table.getColumnCount(); k++) { System.out.println(table.getValueAt(i, k)); } } } } } } private void createRowSorter(DefaultTableModel model) { sorter = new TableRowSorter(model); table.setRowSorter(sorter); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new Tabellensuche()); } }