Suchfunktion schon bei Teilen des Wortes

maGG

Bekanntes Mitglied
Hallo ich habe eine jTabel und ein JTextfield, wenn man bei dem Texfeld nun ein gewissen Ort eingibt (also komplett) wird die Tabelle aktualisiert, sagen wir mal ich gebe "Berlin" ein...
Zu Beginn wird die Tabelle mit allen Zeileneinträgen geladen, wenn ich dann in das Textfeld den ersten Buchstaben oder Zahl eintrage verschwinden alle Einträge, solange bis "Berlin" komplett ausgeschrieben ist. Es wird der entsprechende Eintrag also nur dann angezeigt wenn der String Wert dazu passt.

Jetzt meine Frage: Ist es möglich, dass bereits der Zeileneintrag auftaucht, wenn man noch am Tippen ist?
Also Wenn ich "B" eingebe erscheinen Berlin, Bochum, Bremen, etc. und bei "Be" dann nur noch Berlin und Benzheim, usw.

So siehts aktuell bei mir aus:

Methode um die JTabel mit allen Werten von Filialen_Deutschland zu befüllen (wird im Konstruktor aufgerufen):
Java:
        private void Update_Table_Filialen_Deutschland(){
            try{ 
                String sql = "SELECT * FROM Filialen_Deutschland";
                pst = conn.prepareStatement(sql);
                rs = pst.executeQuery();
                jTableFilialen_Deutschland.setModel(DbUtils.resultSetToTableModel(rs));
             
            }catch(Exception e){
                e.printStackTrace();
            }finally{
            try{
                rs.close();
                pst.close();
                //conn.close();
            }catch(SQLException e){
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, e);
            }
        }

Methode für MouseCklicked (hab ein Platzhalter gemacht, deswegen muss die Farbe verändert werden + Aktualisierung der Tabelle bei erneuter Suchabfrage):
Java:
    private void jTextFieldSearchA1MouseClicked(java.awt.event.MouseEvent evt) {                                             
        jTextFieldSearchA1.setForeground(Color.BLACK);
        jTextFieldSearchA1.setText("");
        Update_Table_Filialen_Deutschland();
    }

Methode für FocusLost (also wenn man aus dem Texfeld wegklickt und es leer ist soll der Plazhalter wieder rein + die Tabelle aktualisiert werden, für den Fall dass das Texfeld leer ist):
Java:
    private void jTextFieldSearchA1FocusLost(java.awt.event.FocusEvent evt) {                                          
        if(jTextFieldSearchA1.getText().equals("")){
            jTextFieldSearchA1.setForeground(Color.lightGray);
            jTextFieldSearchA1.setText(" mit Enter bestätigen...");
            if((jTextFieldSearchA1.getText().equals("") || jTextFieldSearchA1.getText().equals(" mit Enter bestätigen..."))){
                Update_Table_Filialen_Deutschland();
            }
        }
    }

Methode für KeyReleased (also immer wenn man was eingibt soll die Tabell entsprechend geändert werden):
Java:
    private void jTextFieldSearchA1KeyReleased(java.awt.event.KeyEvent evt) {                                            
             
        if((jTextFieldSearchA1.getText().equals("") || jTextFieldSearchA1.getText().equals(" mit Enter bestätigen..."))){
                Update_Table_Filialen_Deutschland();
        }else{
            try{
                String value = jTextFieldSearchA1.getText();
                String sql = "SELECT * FROM Filialen_Deutschland WHERE ORT='" + value + "' ";
                pst = conn.prepareStatement(sql);
                rs = pst.executeQuery();
                jTableFilialen_Deutschland.setModel(DbUtils.resultSetToTableModel(rs));
            }catch(Exception e){
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, e);
            }
        }
    }

Habt ihr Ideen wie man sowas machen könnte bzw. geht sowas überhaupt?
 
Hallo.

Kennst du diese Seite schon?

startsWith oder contains könntest du für die Suche auch benutzen. Oder ein Wildcard Filter selber schreiben.

Grüße
 
Zuletzt bearbeitet:
Wie soll die Suchvervollständigung denn funktionieren? exakt, case insensitive,... nach wie vielen Buchstaben sollen Vorschläge gemacht werden,...
 
Hallo.

Kennst du diese Seite schon?

Grüße
Ne kannte ich noch nicht, dankeschön! 🙂

Wie soll die Suchvervollständigung denn funktionieren? exakt, case insensitive,... nach wie vielen Buchstaben sollen Vorschläge gemacht werden,...
Hmm das ist meine erste Suchfunktion, die ich überhaupt geschrieben habe. Ich weiß leider nicht welche Möglichkeiten es gibt. Ich möchte es glaub so, wie oben beschrieben, also das der String schon exakt sein darf, aber schon korrekt sein soll, wenn der Anfang davon stimmt - das Wort also nicht komplett ausgeschrieben sein muss. Macht das Sinn?😳
 

Zurück
Oben