SWT Combo getSelectionIndex() immer -1?

C

Combodombo

Gast
Hi,

ich benutze eine SWT Combo Control um ein DropDown-Menu zu realiseren. Ich habe einige Werte darin zur Auswahl und das funktioniert auch soweit, also die Combo-Control ist bedienbar.

Nun möchte ich gerne, dass man einfach dne Text ändern und kann und dass dann bei Enter-Eingabe übernommen wird. Dafür habe ich einen KeyListener hinzugefügt wo ich dann mit getSelectionIndex() den aktuellen Wert, der ausgewählt ist, abfragen will. Das dumme ist, ich erhalte immer -1 als Rückgabewert.

Mein Problem ist jetzt, dass ich diesen Index brauche, da die String-Werte in der Combo-Box nicht eindeutig sind und mehrmals vorkommen können.

Java:
@Override
	public void keyPressed(KeyEvent e) {

		if (e.keyCode == SWT.CR) {
			Combo c = (Combo) e.getSource();
			c.update();
			String [] sadfds = c.getItems();
			String asd = c.getText();
			Point p = c.getSelection();
			int i = c.getSelectionIndex(); //<---- immer -1, wieso?

Jemand eine Idee warum getSelectionIndex() immer -1 zurückliefert?
 

Madlip

Bekanntes Mitglied
zu nächst würde ich dir empfehlen nen ComboViewer zu nehmen und warum willst du unbedingt bei einer enter eingabe erst den wert übernehmen? du kannst ja dann auch über den ComboViewer machen indem du da nen SelectionListener drüber hängst.
 
3

34erafsdyxc

Gast
Naja, der ComboViewer nimmt doch intern auch ein Combo?

Das ändern soll erst dann passieren, falls man Eingabe drückt, falls man es sich anders überlegt und doch nicht umbenennen will.
Es muss doch auch bei einem ComboViewer möglich sein zu erfragen welches Element der Eingabedaten grade das aktive ist? Also welches Element momentan ausgewählt ist?
 

Sonecc

Gesperrter Benutzer
Zuerstmal, das c.update() machste mal wieder weg, das macht dort keinen Sinn.

Der SelectionIndex ist zu dem Zeitpunkt deswegen immer -1, weil der Benutzer nichts ausgewählt hat.
Der SelectionIndex ändert sich mit dem verändern des Textes, weil dieser nicht mehr dem ursprünglichen Text entspricht.
Dementsprechend musst du per SelectionListener den Index abholen, sichern und später verwenden.
 
A

alsdkfj

Gast
ich hab jetzt sehr viel mit der combo gekämpft, also den "puren" control. Ich hab aus Verzweiflung jetzt den ComboViewer genommen, wie oben vorgeschlagen.

Mein Problem ist, dass ich (jetzt doch) nach jedem Tastenschlag die Änderung in mein Modell übernehmen will. Dafür hab ich mir einen jetzt keyListener auf die Combo-Control draufgelegt, die den ComboViewer kennt.

Dadurch hatte ich gehofft, ich konnte auf keyeingabe etwas unkomplizierter auf den aktuellen Eintrag der Komboliste zugreifen, leider Pustekuchen.

Sieht jemand was ich falsch mache? Die Selection ist immer nur beim ersten mal gefüllt, nachfolgende Eingabe

Java:
public class ComboKeyListener implements KeyListener {

	private ComboViewer combo;

	private TreeNode node;

	public ComboKeyListener(ComboViewer combo) {
		this.combo = combo;
	}

	@Override
	public void keyPressed(KeyEvent e) {

		ISelection selection = combo.getSelection(); //<- beim ersten Tastenschlag ist hier etwas drin, biem zweiten und nachfolgenden nicht mehr

		if (selection instanceof IStructuredSelection) {

			IStructuredSelection strucSel = (IStructuredSelection) selection;

			node = (TreeNode) strucSel.getFirstElement();
        
		}

	}

	@Override
	public void keyReleased(KeyEvent e) {

		if (node != null) {

			Combo control = (Combo) e.getSource();
			String newBookmarkName = control.getText();

			if (newBookmarkName.compareTo((String) node.getValue()) == 0) {
				node = null;
				return;
			}
			node.setValue(newBookmarkName);

			ISelection sel = new StructuredSelection(node);
			combo.setSelection(sel);
			node = null;
		}
	}
 
A

afdf

Gast
combo.getInput() liefert mir zwar das aktuelle objekt auf dem ich im listener arbeite, aber vor der Verarbeitung. ich bekomme als die Veränderung nicht mit :(
 

Sonecc

Gesperrter Benutzer
Also erstmal ist das von dir gewünschte Verhalten mehr als ungewöhnlich und meiner Meinung nach absolut gefährlich, weil versehentliche Änderungen direkt übernommen werden.

Was du willst ist wohl folgendes:
Der Benutzer wählt ein Objekt aus und soll dieses dann umbenennen können. Die Änderung soll sofort in der combo übernommen werden.

Für diesen Zweck empfiehlt es sich eine Textbox zu verwenden, deren Inhalt immer der aktuellen Selektion entspricht. (Benutzer wählt Item 1 aus, also steht Item 1 in der TextBox)
Hier kannst du nun einen Listener anlegen, der die Änderungen verarbeitet und diese direkt in der Combo aktualisiert.

Nur als Vorschlag
 
A

aksdfjsd

Gast
ich hab viel rumprobiert, dass ist wirklich nicht gut. Die Listener feuern sich gegenseitig kaputt und wer weis welche Randbedingungen ich da noch übersehen habe....

Meine ursprüngliche Idee war es, drum herum zu kommen ein eWarnung oder einen "änderungen speichern" dialog zu mchen, wenn man anfängt zu editieren - daher halt die idee alles zu speichern was getippt wird.
Als Work-Around dachte ich mir, ob man nicht den tooltip text erzwingen kann? Sobald man tippt poppt der tooltip mit auf "enter zum speichern" oder so ähnlich.
Geht das?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Combo Box auswahl in eine Datenbank speichern AWT, Swing, JavaFX & SWT 1
M Eclipse-Platform Combo-Binding für User-Einträge AWT, Swing, JavaFX & SWT 9
A Combo Box Problem bei Schiff Rechner AWT, Swing, JavaFX & SWT 6
W Verschiedene Foreground color in Combo SWT Auswahlliste AWT, Swing, JavaFX & SWT 5
0 Combo Box AWT, Swing, JavaFX & SWT 3
A SWT Combo - wie Tastaureingabe abfragen AWT, Swing, JavaFX & SWT 3
S Combo Box action listener AWT, Swing, JavaFX & SWT 2
L Combo-Box-Button AWT, Swing, JavaFX & SWT 2
C Combo Box Problem AWT, Swing, JavaFX & SWT 2
P SWT - "Combo" aus dem Windows-FileDialog AWT, Swing, JavaFX & SWT 3
G SWT Combo SearchWidget AWT, Swing, JavaFX & SWT 2
C Combo-Box deaktivieren AWT, Swing, JavaFX & SWT 4
Hatsi09 Javafx MediaPlayer spielt nicht immer AWT, Swing, JavaFX & SWT 3
T Swing Tooltip-Delay funktioniert nicht immer. AWT, Swing, JavaFX & SWT 1
J JOptionPane ruft sich selbst immer wieder neu auf AWT, Swing, JavaFX & SWT 3
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
M UI immer lesbar, egal welche Auflösung AWT, Swing, JavaFX & SWT 7
N SceneBuilder wie auf Attribute zugreifen? Diese sind immer null. AWT, Swing, JavaFX & SWT 6
B Swing Posistion von JButton auslesen gibt immer 0 aus AWT, Swing, JavaFX & SWT 1
K JTable getValueAt() klappt nicht immer AWT, Swing, JavaFX & SWT 1
K JavaFX Linie immer in der Mitte der Szene halten AWT, Swing, JavaFX & SWT 12
M Java FX Immer aktuelle Mausposition anzeigen AWT, Swing, JavaFX & SWT 6
Tom299 JavaFX Default-Cursor läßt sich nicht immer "aktivieren" AWT, Swing, JavaFX & SWT 3
Z JComponent's requestFocus() - Wieso nicht immer anwendbar? AWT, Swing, JavaFX & SWT 1
T SWT Mysql Tabelle zeigt immer nur den ersten Wert immer wieder an AWT, Swing, JavaFX & SWT 3
C JTextPane scrollt mit setText() immer nach oben AWT, Swing, JavaFX & SWT 2
B JFrame immer an gleicher stelle auf anderem Frame AWT, Swing, JavaFX & SWT 5
U Fenster beim Vergörßern immer quadratsich AWT, Swing, JavaFX & SWT 7
B Swing Form undecorated: Beim Bewegen geht die Maus immer automatisch zur linken Seite. AWT, Swing, JavaFX & SWT 7
V Buttons sehen immer "active" aus AWT, Swing, JavaFX & SWT 6
M SWT CCombo immer so groß wie der größte Wert! AWT, Swing, JavaFX & SWT 0
MaDDin-94 Swing Listener reagiert nicht immer AWT, Swing, JavaFX & SWT 2
M Key-,... Listener funktioniert nicht immer AWT, Swing, JavaFX & SWT 2
J Abbrechen muss immer einmal mehr gedrückt werden AWT, Swing, JavaFX & SWT 3
D Letzter Button füllt immer ganzes Fenster AWT, Swing, JavaFX & SWT 5
L View aus dem MVC ist immer die GUI? AWT, Swing, JavaFX & SWT 5
C JTable Datensätze bleiben immer gleich AWT, Swing, JavaFX & SWT 14
K 2D-Grafik interstectsLine gibt immer false zurück AWT, Swing, JavaFX & SWT 18
D JDialog: immer nur einer gleichzeitig AWT, Swing, JavaFX & SWT 4
M Fenster mit ProgressMonitor immer leer AWT, Swing, JavaFX & SWT 23
I Fenster immer im Vordergrund AWT, Swing, JavaFX & SWT 14
K Swing Warum bleibt das Image immer gleich AWT, Swing, JavaFX & SWT 4
D JTree node reagiert bei Klick nicht immer AWT, Swing, JavaFX & SWT 2
B JScrollPane scrollt nicht immer automatisch AWT, Swing, JavaFX & SWT 2
S Canvas in ScrollPane wird beim scrollen immer neu gezeichnet AWT, Swing, JavaFX & SWT 3
W 2D-Grafik Koordinaten nicht immer die selben AWT, Swing, JavaFX & SWT 9
D Swing PopupMenu immer an gewünschte Position? AWT, Swing, JavaFX & SWT 2
A BufferedImage nach dem Speichern immer schwarz AWT, Swing, JavaFX & SWT 8
C TextArea Ausgabe immer ganz oben AWT, Swing, JavaFX & SWT 3
S Image wird nicht (immer) in paintComponent gezeichnet? AWT, Swing, JavaFX & SWT 6
O Immer Exception in AWT-EventQueue-0 AWT, Swing, JavaFX & SWT 5
F AWT MouseMotionListener e.getButton() ist immer 0 unter Linux und Windows AWT, Swing, JavaFX & SWT 6
N JTable, Zeile bleibt immer selektiert.... AWT, Swing, JavaFX & SWT 3
A Swing JFrame vergrößert sich immer bei setText() eines Labels AWT, Swing, JavaFX & SWT 3
G 2D-Grafik BufferedImage Hintergrund immer schwarz AWT, Swing, JavaFX & SWT 4
M WindowEvent löst immer PropertyChangeListener aus AWT, Swing, JavaFX & SWT 9
F Spalten in JTable immer am rechten Tabellenrand AWT, Swing, JavaFX & SWT 3
2 Werde Java GUIs immer noch mit dem in die Jahre gekommen Swing gemacht? AWT, Swing, JavaFX & SWT 12
S JFreeChart Achse immer sichtbar AWT, Swing, JavaFX & SWT 2
C AWT dispose() erzeugt nicht immer formfeed AWT, Swing, JavaFX & SWT 2
R Swing JDialog liefert immer false, 2 JListen verknüpfen AWT, Swing, JavaFX & SWT 3
B Swing: letztes Element wird immer auf Fenstergröße gezogen AWT, Swing, JavaFX & SWT 3
B Swing JTable getSelectedRow() liefert immer -1 AWT, Swing, JavaFX & SWT 6
A Größe eines JFrames immer nur quadratisch AWT, Swing, JavaFX & SWT 8
aze getX ,getY immer 0 AWT, Swing, JavaFX & SWT 9
R JTable immer nur die letzte Spalte markiert.... AWT, Swing, JavaFX & SWT 4
ABstraCT JTabbedPane - click wird nicht immer ausgeführt ! AWT, Swing, JavaFX & SWT 10
aze JDialog immer so breit ,dass die Überschrift sichtbar ist AWT, Swing, JavaFX & SWT 6
S Listener der mich informiert wann immer einer Liste ein Element hinzugefuegt wird? AWT, Swing, JavaFX & SWT 4
multiholle Swing Mouselistener auf Parentpanel immer aktiv AWT, Swing, JavaFX & SWT 7
hdi Swing JLabel - Grösse passt sich immer Text an AWT, Swing, JavaFX & SWT 17
P JButtons haben nicht immer lust zu erscheinen AWT, Swing, JavaFX & SWT 9
R JScrollBar - Immer drei Zeilen weiter AWT, Swing, JavaFX & SWT 10
N JLabel immer zentriert AWT, Swing, JavaFX & SWT 2
S JDialog startet immer wieder neu AWT, Swing, JavaFX & SWT 2
G Value vom TreeCellEditor ist immer null AWT, Swing, JavaFX & SWT 3
M GridBagLayout - Position immer zentriert AWT, Swing, JavaFX & SWT 5
A Scrollbalken von JScrollPane immer anzeigen AWT, Swing, JavaFX & SWT 2
GilbertGrape JTable - immer leere Zeile AWT, Swing, JavaFX & SWT 6
K Textfelder auslesen gibt immer Fehler AWT, Swing, JavaFX & SWT 2
H SWT - KeyListener unterbricht immer am Anfang AWT, Swing, JavaFX & SWT 2
G Ein jTextField im laufe das Programmes immer wieder updaten AWT, Swing, JavaFX & SWT 2
C JScrollPane immer ganz unten ausrichten AWT, Swing, JavaFX & SWT 17
G Fenster immer im Vordergrund und aktiv? AWT, Swing, JavaFX & SWT 2
G JScrollpage: Viewport beim Zoomen immer relative zentrieren AWT, Swing, JavaFX & SWT 5
G JTable wird nicht immer angezeigt AWT, Swing, JavaFX & SWT 4
der JoJo [SWT]Meherer Composite's , immer nur eins anzeigen AWT, Swing, JavaFX & SWT 2
T JComboBox immer ItemStateChanged werfen AWT, Swing, JavaFX & SWT 30
S Frame Fenster immer im vordergrund AWT, Swing, JavaFX & SWT 3
M JComboBox in JTable immer sichtbar AWT, Swing, JavaFX & SWT 16
F Scrollpane scrollt immer zur TextArea AWT, Swing, JavaFX & SWT 8
vogella JTable und JScrollPane - ScrollPane immer in der Mitte AWT, Swing, JavaFX & SWT 2
P methode bei Mausdruck immer wiederholen AWT, Swing, JavaFX & SWT 3
A Fenster bzw. Frame wird nicht immer sichtbar AWT, Swing, JavaFX & SWT 12
R Menubar immer updaten! AWT, Swing, JavaFX & SWT 9
H getGraphics() eines JPanel liefert immer null zurück AWT, Swing, JavaFX & SWT 6
K JTable: letzte Zeile immer sichtbar AWT, Swing, JavaFX & SWT 2
E Programm immer im Vordergrund ! AWT, Swing, JavaFX & SWT 8
raptorrs J2D graphics, sind 500px immer 500 px AWT, Swing, JavaFX & SWT 2
M JButtons immer gleiche Größe? AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben