Suchfeld mit Auswahl

Status
Nicht offen für weitere Antworten.

Izibaar

Mitglied
Ich versuche momentan ein Suchfeld (JTextField) zu realisieren, welches mir während der Eingabe Vorschläge anzeigt mit den gleichen Anfangsbuchstaben. Dabei liegen die Daten in einer Tabelle vor. In der JTable ist die erste Spalte und zweite Spalte der Inhalt nach dem gesucht wird.
Um genau zu sein meine ich eine Suche wie auf www.quelle.de, dort werden Vorschläge gegeben. Und hier ein Auszug aus der (unfertigen) Tabelle:
Code:
3U TELECOM     .       516790	.	a
4SC AG         .       575381	.	b
AAP IMPLANT    .       506660	.	c
AAREAL BANK    .       540811	.	d
ABSOLUTE CAP	.       A0JEGU	.	e
AC SERVICE     .       511000	.	f
ACG            .       500770	.	.
AD PEPPER      .       940883	.	.
ADIDAS         ADS     500340	.	.
ADV VISION     .       931340	.	.
Punkte sind Platzhalter.
Die Vorschläge sollen aus der ersten und zweiten Spalte entnommen werden.

Habe schon an ein JPopupMenu gedacht. Bekomme es aber nicht angezeigt, wenn ich auf das Textfeld klicke. Und ob man dann dynamisch das Menü anpassen kann weiß ich auch nicht.
 

Izibaar

Mitglied
Danke. Das mit Popupmenu hat sich damit erübrigt.

Jetzt gibt es aber ein weiters Problem. Wie (oder welcher Listener?) registriert man das der Benutzer einen Buchstaben hinzugefügt hat. Der ActionListener springt nur an, wenn man mit 'Enter' seine Eingabe bestätigt. Und der KeyListener macht garnichts.
 

Izibaar

Mitglied
Ich glaube JComboBox ist doch das falsche. Ich komme überhaupt nicht an das ran was ich eingebe. Folglich kann ich auch keinen DocumentListener dranhängen. Ich habe auch schon versucht diesen zu implementieren und einen KeyListener zu implementieren. Desweiteren brachte ein JComboBox.KeySelectionManager auch keine Reaktion. Momentan wäre ich froh, wenn ein 't' ausgegeben wird falls sich etwas ändert im Eingabefeld.

Muss ich wohl doch über TextField was machen. Gibt es eine Möglichkeit den Quelltext von JComboBox einzusehen? Dann müsste ich das Rad nicht komplett neu erfinden.
 

Izibaar

Mitglied
Weil ich Threads nicht mag die zu keinen Lösungen kommen, schreibe ich nochmal. Ich habe schon 5-10 Foren gefunden in denen das gleiche gefragt wurde und nichts bei raus kam. :wink:
Code:
import javax.swing.JComboBox;
import javax.swing.JPopupMenu;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.JTextComponent;


public class SearchField extends JComboBox implements DocumentListener {
	JPopupMenu menu;
	
	public SearchField() {
		this.setEditable(true);
				
		JTextComponent editor = (JTextComponent) this.getEditor().getEditorComponent();
		editor.getDocument().addDocumentListener(this);
	}
	

	public void changedUpdate(DocumentEvent arg0) {/*useless*/}

	public void insertUpdate(DocumentEvent arg0) {
		System.out.print("t2 ");
	}

	public void removeUpdate(DocumentEvent arg0) {
		System.out.print("t3 ");
	}
}
Mit den zwei Zeilen
JTextComponent editor = (JTextComponent) this.getEditor().getEditorComponent();
editor.getDocument().addDocumentListener(this);
wird wird der JComboBox über einen Umweg doch noch ein DocumentListener aufgedrückt. Der Rest dürfte dann mit einer Suche und setItem() removeItem() kein Problem mehr darstellen.

Am Ende hat dann ja jeder etwas dazu beigetragen. Danke.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben