markok Geschrieben 14. Juli 2010 Geschrieben 14. Juli 2010 Hallo Community, ich hänge jetzt seit mittlerweile über einer Woche an einem Problem und hoffe, dass es hier irgendjemand lösen kann . Ich versuche vergeblich eine JTable zu filtern, was eigentlich total simpel scheint aber bei mir nicht funktioniert. Ich habe einen Documentlistener auf ein JTextfield was bei jeder Eingabe folgende Filtermethode auslöst: newFilter() { DefaultTableModel modGefiltert = new DefaultTableModel(); modGefiltert = dat.alleAnzeigen(); //dat.alleAnzeigen füllt das Model mit Daten aus meiner Datenbank TableRowSorter<DefaultTableModel> rowSorter = new TableRowSorter<DefaultTableModel>( modGefiltert ); jtableHauptTab.setRowSorter( rowSorter ); RowFilter<DefaultTableModel , Object> rf = null; //declare a row filter for your table model try { rf = RowFilter.regexFilter(jTextfieldSuchBegriff1.getText(),4); //initialize with a regular expression } catch (java.util.regex.PatternSyntaxException e) { return; } rowSorter.setRowFilter(rf); jtableHauptTab.setModel(modGefiltert); } Das Model wird einfach nicht gefiltert und ich weiß nicht warum?!Kann mir jemand helfen?Wäre endlos dankbar! Danke schon mal Liebe Grüße
perdian Geschrieben 16. Juli 2010 Geschrieben 16. Juli 2010 Keiner eine IdeeNein. Sonst wären hier schon Antworten gepostet worden. Threadpushing bringt dich einer brauchbaren Antwort keinen Millimeter näher also lass das bitte.
Al-Bundy Geschrieben 17. Juli 2010 Geschrieben 17. Juli 2010 hab um deine Methode mal etwas drumherum gebaut public class Testklasse extends JDialog { private JTable jtableHauptTab; private JTextField jTextfieldSuchBegriff1; public Testklasse() { jtableHauptTab = new JTable(); jTextfieldSuchBegriff1 = new JTextField(); jTextfieldSuchBegriff1.getDocument().addDocumentListener(new Listener()); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(jTextfieldSuchBegriff1, BorderLayout.NORTH); panel.add(jtableHauptTab, BorderLayout.CENTER); add(panel); setDefaultCloseOperation(DISPOSE_ON_CLOSE); fillTable(); pack(); } private void fillTable() { ((DefaultTableModel)jtableHauptTab.getModel()).setDataVector(getData(), getColumns()); } private Vector<Vector<String>> getData() { Vector<Vector<String>> vector = new Vector<Vector<String>>(); for (int i = 0;i < 5;i++) { Vector<String> v = new Vector<String>(); v.add("Test: " + i); v.add("haus: " +i); v.add("maus: " +i); v.add("telephone: " + i); v.add(i % 2 == 0 ? "Computer": "Pc"); v.add("internet" + i); vector.add(v); } return vector; } private Vector<String> getColumns() { Vector<String> columns = new Vector<String>(); columns.add("Test"); columns.add("haus"); columns.add("maus"); columns.add("telephone"); columns.add("computer"); columns.add("internet"); return columns; } private class Listener implements DocumentListener { void newFilter() { DefaultTableModel modGefiltert = new DefaultTableModel(); modGefiltert.setDataVector(getData(), getColumns()); // = dat.alleAnzeigen(); //dat.alleAnzeigen füllt das Model mit Daten aus meiner Datenbank TableRowSorter<DefaultTableModel> rowSorter = new TableRowSorter<DefaultTableModel>( modGefiltert ); jtableHauptTab.setRowSorter( rowSorter ); RowFilter<DefaultTableModel , Object> rf = null; //declare a row filter for your table model try { rf = RowFilter.regexFilter(jTextfieldSuchBegriff1.getText(),4); //initialize with a regular expression } catch (java.util.regex.PatternSyntaxException e) { return; } rowSorter.setRowFilter(rf); jtableHauptTab.setModel(modGefiltert); } @Override public void changedUpdate(DocumentEvent e) { newFilter(); } @Override public void insertUpdate(DocumentEvent e) { newFilter(); } @Override public void removeUpdate(DocumentEvent e) { newFilter(); } } public static void main(String[] args) { new Testklasse().setVisible(true); } } wenn ich dann im Textfeld 'Pc' eingeben, klappt das wunderbar. Was bei dir nicht ganz verstehe, warum du erst 'modGefiltert' eine neues Object zuordnest und es direkt dahinter schon wieder überschreibst ?! Vielleicht findest du ja deinen Fehler oder du musst noch mehr deines Quellcodes zeigen, vielleicht liegt ja auch da ein Fehler.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden