Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich zeige euch erstmal ein Beispiel. Dann erkläre ich!
Ganz normale Texteingabe
Meine Eingabe: "Apfelbaum" zum bestätigen muss ich wie gewohnt auf "OK" drücken.
Jetzt gebe ich aber "Baum" ein und automatisch drückt der Computer auf "OK".
Erklärung/Frage (Ich weiß, dass das nicht dasselbe ist) :
Geht es dass wenn ich etwas bestimmtes eingebe (z.B. "Apfel"), dass dann automatisch auf OK geklickt wird. So ist das bei manchen Programmen wenn die nachdem "Serial Code" fragen.
Oder dass es garkein "OK" gibt sondern man kann nur das eingeben vorher geht es nicht weiter?
du könntest in nem eigenen Thread ständig überprüfen, ob sih ein bestimmter String in dem Feld befindet (Stichwort regex). du könntest auch eine eigene, vom TextFeld abgeleitete Klasse schreiben, welche einen KeyListener implementiert und dann immer wenn eine taste gedrückt wurde den inhalt abzufragen und wieder mit regex überprüfen
Das mit dem Thread ginge. Auch eine vom Textfeld abgeleitete Klasse würde funktionieren aber wozu? Man kann einfach einen keylistener hinzufügen, der bei Loslassen der Taste nachguckt, ob ein bestimmter String in dem Feld ist. (.contains() oder .equals() oder .equalsIgnoreCase() ) Dazu muss man die Klasse nicht ableiten. Das geht in der hinzufügenden Klasse.
Ja aber dann wird der Zugriff auf die GUI Komponenten schwer, da man eine Referenz mitgeben müsste und wie händelt man das dann mit den privaten Eigenschaften? Da finde ich einen ActionListener in der Hinzufügenden Klasse am einfachsten.
, die ein JTextField erzeugt und an dieses gleich den Listener in einer anonymen Klasse hängt. Das JTextField mit bereits registriertem Listener wird dann zurück gegeben und kann in seinen Container (Window, Panel) eingefügt werden.
also ich würde hier ganz einfach [japi]PlainDocument[/japi] erweitern und insertString(int, String, javax.swing.text.AttributeSet) überschreiben ... und dann einfach mit JTextField.setDocument(Document) an das JTextField hängen ...
dazu gibts auch ein paar beispiele wie man damit richtig umgeht um halt die eingabe zu prüfen
der String-parameter ist das was eingefügt werden soll
mit getText(0, getLength()) kommt man an den text der bereits im Field steht
nun baut man sich das zusammen und prüft ob das was am ende bei rauskommt und dann im Field stehen würde das ist was man haben will ... und löst dann entsprechend das event aus in dem man einfach JButton.doClick() callt ... (sinnvoller weise dafür natürlich auch ne instanz des buttons übergeben)
wäre jetzt so meine idee anstatt mit listenern oder threads da rumzuhampeln ... wenn man auf sowas kommt kann man sich auch gleich IN die kette einklinken