Automatischer Vervollständigung einer Texteingabe

Sin137

Mitglied
Hallo liebe Com,

ich suche schon den ganzen Tag finde aber nichts.
Mein Vorhaben:

Ich will eine Texteingabe in ein JTextField tätigen. Sofern ich etwas eingetragen habe, soll unter dem TextField eine Liste (Änlich einer ComboBox) erscheinen mit möglichen Eingaben.
Alle Möglichen Eingaben habe ich in einem String[] abgespeichert.

Ich habe schon eine Idee aber der gewisse startkick fehlt mir grade. Ich dachte an eine art TextArea die unter dem TextField erscheint.

Ein selbstgeschriebener Algorithmus soll nach jedem Input über das Array laufen und mögliche Strings in eine ArrayList speichern.
Danach soll eine Liste erscheinen mit allen möglichkeiten.

Nach der nächsten Eingabe, soll der Algorithmus von vorne beginnen.


Ich bedanke mich schon einmal für Vorschläge und Ideen.
 

Sin137

Mitglied
Ich arbeite bis jetzt mit einem DocumentListener.
Ich habe Strings die im vorfelt gleich sind sich hinten aber vverändern.

z.B:

0001 Haustür
0002 Dach
0003 Toilette
0004 Bügelbrett
0005 Ziegel
(Das sind lediglich Beispiele keine echten Werte: Der Aufbau ist jedoch ähnlich)

Mein Vorhaben liegt jetzt darin, wenn ich in das JTextField 000 eingebe,
sollen mir alle Strings angezeigt werden die eine 000 beinhalten. Mir geht es hier nicht um den suchalgorythmus.

Meine Frage liegt darin, wie ich diese unter dem JTextField auflisten kann, ohne ein festes Element dafür einzubauen, dass immer sichtbar ist.
 

Khal Drogo

Bekanntes Mitglied
EDIT: Ersten Post bitte ignorieren, habe die Frage nicht direkt verstanden.

Hast du mal darüber nachgedacht, einfach die Funktion setVisible(boolean) zu benutzen (sofern du mit JComponents o. ä. arbeiten willst)?

Mit freundlichen Grüßen
Xelsarion
 

Sin137

Mitglied
Tooltip ist hier das Falsche. Ich beschreib es nochmal genauer:

Ich habe eine Maske, in die Werte eingetragen werden können.
Je nach dem welche Werte eignetragen werden, soll eine spezifische SQL-Abfrage getätigt werden.
Da es sich um eine DB mit verschiedenen Porduktgruppen handelt würde ich gerne folgendes als Funktion programmieren.

In dem JTextField für Produktgruppen will ich etwas eingeben.

0001 Haustür
0002 Dach
0003 Toilette
0004 Bügelbrett
0005 Ziegel

meine Produktgruppen.

Jetzt fange ich an zu schreiben:

000 <- so würde es bis dahin im Jtextfield stehen!

zu der zeit will ich eine art Liste unterhalb des JTextField anzeigen lassen wo alle Produktgruppen drinstehen, die man auch auswählen kann um den Text in das Feld zu verschieben. (Vorstellbar wie bei Google)

würde dann die 1 folgen:

0001

sollte dann wirklich nur noch 0001 Haustür vorgeschlagen werden.


Zu der Lösung mit Visible:

Da müsste ich in mein Panel trozdem die JTextArea einfügen und diese würde auch ihren Platz verbrauchen (auch wenn nicht sichtbar). Und dies siet mehr als bescheiden aus.



LG

Sin
 

strußi

Top Contributor
Dann zeig uns doch, was du bis jetzt an code hast, damit wir dir helfen können
hab sowas ähnliches mit verbindung eines focuslisteners gemacht
Java:
//    Gibt den Kontennamen zurück der in dem Textfeld neben der Kontonummer geschrieben wird
    public static String kontoGetKurzname(Connection conn, String knr){
        String kname = "";
        int count = 1;
        try{
            Statement sql = conn.createStatement();
            ResultSet rs = sql.executeQuery( "SELECT Kurzname FROM Stammdaten WHERE Kontonr LIKE '"+knr+"'");
            while(rs.next()){
                 kname = rs.getString(count);
                 count++;
            }
            if( kname.equals("")){
                kname = "";
            }
            sql.close();
        } catch( SQLException e){}
        return kname;
    }
 
Zuletzt bearbeitet:

Sin137

Mitglied
Okay also der Code ist bestimmt schrecklich für euch, ich kann es leider noch nicht besser.

Java:
package de...._....controller;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.Vector;

import javax.swing.DefaultBoundedRangeModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;

import de...._....view.QueryNewView;

public class QueryNewController implements KeyListener{

    private JComboBox cb;
    private QueryNewView _view;
    private String match = "";
    private int i;
    private Vector comboBoxItems, comboBoxItems2;
    private DefaultComboBoxModel model;
   
    public QueryNewController(QueryNewView _view){
        this._view = _view;
        i = 1;
       
        //Beispieleinträge
        comboBoxItems = new Vector();
        comboBoxItems.add("0001 Test1");
        comboBoxItems.add("0002 Test2");
        comboBoxItems.add("0003 Test3");
        comboBoxItems.add("0004 Test4");
       
        comboBoxItems2 = new Vector();
      

    }
   
    public void controll(){
       
    }
   
    public void autoCompleteHWG(JComboBox cb){
        this.cb = cb;
        cb.getEditor().getEditorComponent().addKeyListener(this);
    }

    @Override
    public void keyPressed(KeyEvent e) {
        // TODO Auto-generated method stub
       
    }

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub
       
    }

     // An dieser Stelle verzweifel ich
    @Override
    public void keyTyped(KeyEvent e) {
        char c = e.getKeyChar();                       // der Buchstabe/Zahl der eingabe
        match += c;                                         // gesamte Eingabe
        System.out.println(match);                     // testausgabe
        JComboBox show = (JComboBox)e.getComponent().getParent();  //ich greife hier auf das objekt zu, dass aktiv ist
       
         //hier kommt der Algorithmus rein:
        for(int i = 0; i < comboBoxItems.size();i++){
            if(((String)comboBoxItems.get(i)).contains(match)){
                comboBoxItems2.add(comboBoxItems.get(i));
            }
        }
       
        //hier versuch ich das Model mit den neuen Daten zu aktualisieren
        model = new DefaultComboBoxModel(comboBoxItems2);
        show.removeAllItems();
        show.insertItemAt(match, 0);
        show.setModel(model);
       
    }       

       
}

Hab jetzt als schon rumprobiert. Was ich nicht herausgefunden habe:

Kann ich das aktuelle Objekt in der BomboBox fixieren sodass erst der ganze eintrag erschein wenn ich es mit Enter bestätige.

wie sag ich, dass die Auswahl ständig angezeigt wird.
 

Sin137

Mitglied
Ich hab es jetzt fast!

Java:
package de.....controller;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.Vector;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;

import de.....view.QueryNewView;

public class QueryNewController implements KeyListener{

    private JComboBox cb;
    private QueryNewView _view;
    private String match = "";
    private int i;
    private ArrayList<String> hwg1, hwg2;
    private Vector comboBoxItems, comboBoxItems2;
    private DefaultComboBoxModel model;
   
    public QueryNewController(QueryNewView _view){
        this._view = _view;
        i = 1;
       
        comboBoxItems = new Vector();
        comboBoxItems.add("0001 Gewindefittings / Gussfittings");
        comboBoxItems.add("0002 Armaturen");
        comboBoxItems.add("0003 Rohrbogen");
        comboBoxItems.add("0004 Schweißfittings");
       
        comboBoxItems2 = new Vector();
               
    }
   
    public void controll(){
       
    }
   
    public void autoCompleteHWG(JComboBox cb){
        this.cb = cb;
        cb.getEditor().getEditorComponent().addKeyListener(this);
    }

    @Override
    public void keyPressed(KeyEvent e) {
        // TODO Auto-generated method stub
       
    }

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub
       
    }

    @Override
    public void keyTyped(KeyEvent e) {
        char c = e.getKeyChar();
        match += c;
        JComboBox show = (JComboBox)e.getComponent().getParent();

        if(i%2 == 0){
            System.out.println("test0");
            comboBoxItems.clear();
            for(int j = 0; j < comboBoxItems2.size();j++){
                if(((String)comboBoxItems2.get(j)).contains(match)){
                    comboBoxItems.add(comboBoxItems2.get(j));
                }
            }
           
            model = new DefaultComboBoxModel<>(comboBoxItems);
       
            show.setModel(model);
            show.showPopup();
        }
       
        //Fehler ausgabe nicht perfekt 435
        if(i%2 == 1){
            comboBoxItems2.clear();
            for(int j = 0; j < comboBoxItems.size();j++){
                if(((String)comboBoxItems.get(j)).contains(match)){
                    comboBoxItems2.add(comboBoxItems.get(j));
                }
            }
           
            model = new DefaultComboBoxModel(comboBoxItems2);
           
            show.setModel(model);
            show.showPopup();
        }
           
        show.getEditor().setItem(match);
        i++;
    }       

       
}

Mein einziges Problem ist, dass wenn ich etwas eintippe, zuerst das zeichen doppelt dargstellt wird, tippe ich aber weiter ein ist es von der Struktur richtig. Weiß jemand wie man das richtig darstellt ?

Habe dazu leider keine Idee. Und Herr Google kennt leider auch nicht die Antwort.


LG

Sin
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Swing Automatischer Editorstart in JTable-Zelle AWT, Swing, JavaFX & SWT 5
X JTextPane automatischer Zeilenumbruch IM Wort AWT, Swing, JavaFX & SWT 2
S Swing Automatischer Zeilenumbruch bei JTextPanes AWT, Swing, JavaFX & SWT 2
R JavaFX Automatischer Zeilenumbruch in Text AWT, Swing, JavaFX & SWT 13
G jTable mit automatischer Zeilenhöhe je nach Fenstergröße. AWT, Swing, JavaFX & SWT 3
O AWT Automatischer Doppelklick AWT, Swing, JavaFX & SWT 3
F (Split)Panel faden bei automatischer Größenanderung AWT, Swing, JavaFX & SWT 2
D JFrame in Taskleiste: Symbol nach automatischer Gruppierung AWT, Swing, JavaFX & SWT 5
J automatischer Tabulatorsprung AWT, Swing, JavaFX & SWT 2
I Automatischer Zeilenumbruch in JTextArea? AWT, Swing, JavaFX & SWT 5
M [SOLVED]Automatischer Methodenaufruf? AWT, Swing, JavaFX & SWT 4
R JTable, automatischer resize der Zellen nach einer Eingabe AWT, Swing, JavaFX & SWT 4
G DropDown mit "Vervollständigung" AWT, Swing, JavaFX & SWT 6
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
T VerifyListener - Ersetzen einer 0 AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
H JavaFX Timeline II: Verschieben einer ImageView AWT, Swing, JavaFX & SWT 16
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
L Swing TextPanel Schrift untereinander und auf einer Höhe AWT, Swing, JavaFX & SWT 3
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
mac2010 JavaFX Einbindung einer Karte AWT, Swing, JavaFX & SWT 1
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
W Aufrufen einer bestimmten Scene mit if-Bedingung AWT, Swing, JavaFX & SWT 4
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
@SupressWarnings() JavaFX Auf den Controller einer ListCell zugreifen AWT, Swing, JavaFX & SWT 4
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
B Textfelder in einer ListView ausgeben AWT, Swing, JavaFX & SWT 13
J Searchfunktion auf einer MS Access Datenbank AWT, Swing, JavaFX & SWT 7
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
M Inhalte einer FlowPane AWT, Swing, JavaFX & SWT 4
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
FRI3ND JavaFX: Wie kann ich einer Scene Argumente übergeben? AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
K JavaFX ViewTable mit einer LinkedList befüllen AWT, Swing, JavaFX & SWT 3
L CardLayout in einer Klasse? AWT, Swing, JavaFX & SWT 2
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing Ausführung einer SwingWorker Klasse stoppen AWT, Swing, JavaFX & SWT 4
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
MiMa Selektion aus einer ListView AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J JFram Location aus Konstruktor einer anderen Klasse auslesen AWT, Swing, JavaFX & SWT 10
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
J Suche nach einer horizontal aufklappbaren Toolbar AWT, Swing, JavaFX & SWT 1
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
D JavaFX Einbinden einer .fxml AWT, Swing, JavaFX & SWT 1
B Zeile einer Tabelle selektieren AWT, Swing, JavaFX & SWT 1
A Prüfung einer Eingabe auf Gleitkommazahl AWT, Swing, JavaFX & SWT 5
J Suchmaschine einer Datenbank AWT, Swing, JavaFX & SWT 5
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
M Auswahl aus einer ListView AWT, Swing, JavaFX & SWT 3
J JavaFX - Felder (Label) in einer ForSchleife bearbeiten AWT, Swing, JavaFX & SWT 4
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
C JavaFX Tief setzen in der Überschrift einer Tabellenspalte AWT, Swing, JavaFX & SWT 3
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben