Suchfunktion an JTable einführen

Alles was mit Swing und AWT zu tun hat

Moderatoren: wegus, Olek77

Antworten
reiasmus
Beiträge: 67
Registriert: 15.11.2010, 09:36

Suchfunktion an JTable einführen

Beitrag von reiasmus » 13.12.2010, 14:16

Hallo,

in Anlehnung an das Beispiel http://netbeans.org/kb/65/java/gui-db-custom.html (Abschnitt - Adding a Search Function) habe ich ein Suchfeld an meine JTable gebunden.

Wenn die Anwendung startet, steht in dem Eingabefeld für die Suche etwas in folgender Art: javax.swing.table.TableRowSorter@1dc0e7a.

Was ist das? Ich hatte erwartet, dass Feld ist leer.

Benutzeravatar
arittner
Beiträge: 3229
Registriert: 05.08.2008, 07:20
Wohnort: Südniedersachsen
Kontaktdaten:

Re: Suchfunktion an JTable einführen

Beitrag von arittner » 13.12.2010, 15:02

Moin!

Ohne Quelltext ist faktisch nicht zu helfen. Bitte relevante Ausschnitte posten.

Beste Grüße,
Josch.
JNBB/BeanDev-Blog | Twitter@beandev
Bild
Sun Certified Specialist for NetBeans IDE

reiasmus
Beiträge: 67
Registriert: 15.11.2010, 09:36

Re: Suchfunktion an JTable einführen

Beitrag von reiasmus » 14.12.2010, 09:43

Nun gut, ich versuche es.

Beim Start der Anwendung sortiere ich eine angezeigte Tabelle und zwar so

Code: Alles auswählen

//                aktenaktuellTable wird nach Nummern aufsteigend sortiert

                DefaultRowSorter rowSorter = ((DefaultRowSorter)aktenaktuellTable.getRowSorter());
                ArrayList list = new ArrayList();
                list.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
                rowSorter.setSortKeys(list);
                rowSorter.sort();
In der Seite gibt es ein Suchfeld (JTextField) welches mit folgender Klasse mittels binding verknüpft ist:

Code: Alles auswählen

public class RowSorterToStringConverter extends Converter {

    private JTable table;

    public JTable getTable() {
        return table;
    }

    public void setTable(JTable table) {
        this.table = table;
    }

    @Override
    public Object convertForward(Object value) {
        return value.toString();
    }

    @Override
    public Object convertReverse(Object mask) {
        TableRowSorter sorter = new TableRowSorter(table.getModel());

        // The following statement makes the filter case-sensitive. If you want
        //filter to work in a case-insensitive way, uncomment the line below, comment
        //the 7 code lines below
        //sorter.setRowFilter(RowFilter.regexFilter(".*" + mask + ".*"));

        //The following 7 lines create a case-insensitive filter. If you want
        //the filter to be case-sensitive, comment them out and uncomment the
        //line above
        String m = mask.toString();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < m.length(); i++) {
            char c = m.charAt(i);
            sb.append('[').append(Character.toLowerCase(c)).append(Character.toUpperCase(c)).append(']');
        }

//        Basissortierung mit eingeführt, dann sieht das Verhalten ganz o.k. aus

        ArrayList list = new ArrayList();
        list.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));

        sorter.setRowFilter(RowFilter.regexFilter(".*" + sb + ".*"));

        sorter.setSortKeys(list);

        return sorter;
    }
}
Schon in der Design-Ansicht steht jetzt in der Text-Propertie des Suchfeldes ein Wert wie oben angegeben. Wo kommt der her und welche Bedeutung hat das?

Ich leere jetzt zum Start der Anwendung explizit das Suchfeld. Es tut dann auch sein gewünschtes Werk. Aber ich wüsste gern was da abläuft. Ich hätte keinen Inhalt erwartet.

Djborizza
Beiträge: 2
Registriert: 28.07.2013, 08:46

Re: Suchfunktion an JTable einführen

Beitrag von Djborizza » 29.07.2013, 09:04

Hallo,

konntet ihr das Problem lösen?
Habe genau das selbe Problem.

Benutzeravatar
Tux1000
Beiträge: 264
Registriert: 05.04.2008, 16:09

Re: Suchfunktion an JTable einführen

Beitrag von Tux1000 » 29.07.2013, 12:04

Hallo und willkommen,

du könntest auch den JXTable aus dem SwingX Projekt verwenden. Der bietet sowohl eine Suche (auch über Strg+F) als auch eine sehr coole Filterfunktion.

Demo: http://swingx.java.net/
Download: https://java.net/downloads/swingx/releases/

Gruß

Djborizza
Beiträge: 2
Registriert: 28.07.2013, 08:46

Re: Suchfunktion an JTable einführen

Beitrag von Djborizza » 29.07.2013, 20:19

Hallo,

ich verwende schon die JXTable. Habe aber immer noch das Problem dass der Text im Suchfeld steht.7

Antworten