SWT SWT - List - DeSelection Problem

reibi

Top Contributor
Hallo

Ich möchte Euch die 2 folgenden useCases mal demonstrieren:

Fall 1 : ListItem ist ausgewählt, dann wird Enter gedrückt.
- Das Textfeld enthält wie erwartet den in der Liste ausgewählten Text
- Das ListItem wird wie erwartet deselectiert.

Fall 2(PROBLEMFALL) : ListItem ist ausgewählt(0-tes Item), dann wird die "Pfeiltaste nach oben" gedrückt.
- Das Textfeld enthält wie erwartet den in der Liste ausgewählten Text
- Das ListItem wird NICHT! wie erwartet deselectiert. <--- PROBLEM

--> Wo könnte hier das Problem liegen?

Bin schon Tage lage damit beschäftigt und kommt irgendwie nicht weiter.

Bis für jeden Tipp dankbar

Gruß

Java:
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;


public class TestList {
    private Shell myShell = null;
    private List myList = null;
    private Text myText = null;
    private Button myButton = null;

    public static void main(String[] args) {
        Display display = Display.getDefault();
        TestList thisClass = new TestList();
        thisClass.createSShell();
        thisClass.myShell.open();

        while (!thisClass.myShell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            } // end if
        } // end while

        display.dispose();
    } // end main()

    private void createSShell() {
        myShell = new Shell();
        myShell.setText("Shell");
        myShell.setSize(new Point(263, 193));
        myList = new List(myShell, SWT.NONE);
        myList.setSize(new Point(190, 82));
        myList.setLocation(new Point(5, 31));

        String[] myStrings = new String[5];

        for (int i = 0; i < myStrings.length; i++) {
            myStrings[i] = "hallo " + i;
        } // end for

        myList.setItems(myStrings);

        myList.addKeyListener(new KeyListener() {
                @Override
                public void keyReleased(KeyEvent arg0) {
                } // end keyReleased()

                @Override
                public void keyPressed(KeyEvent keyEvent) {
                    if (keyEvent.keyCode == SWT.CR) {
                        if (myList.getSelectionIndex() > -1) {
                            myText.setText(myList.getItem(myList.getSelectionIndex()));

                            myList.deselectAll();
                            myText.setFocus();
                        } // end if
                    } // end if

                    if (keyEvent.keyCode == SWT.ARROW_UP) {
                        if (myList.getSelectionIndex() == 0) {
                            myText.setText(myList.getItem(0));
                            myList.deselectAll();
                            myText.setFocus();
                        } // end if
                    } // end if
                } // end keyPressed()
            } // end new
        );

        myText = new Text(myShell, SWT.BORDER);
        myText.setBounds(new Rectangle(6, 7, 190, 19));
        myButton = new Button(myShell, SWT.NONE);
        myButton.setBounds(new Rectangle(78, 122, 115, 23));
        myButton.setText("drück mich");
    } // end createSShell()
} // end TestList
 

Sonecc

Gesperrter Benutzer
Java:
		myList.addKeyListener(new KeyListener() {

			@Override
			public void keyReleased(KeyEvent keyEvent) {
				if (keyEvent.keyCode == SWT.CR) {
					if (myList.getSelectionIndex() > -1) {
						myText.setText(myList.getItem(myList.getSelectionIndex()));

						myList.deselectAll();
						myText.setFocus();
					} // end if
				} // end if
				if (keyEvent.keyCode == SWT.ARROW_UP) {
					if (myList.getSelectionIndex() == 0) {
						myText.setText(myList.getItem(0));
						myList.deselectAll();
						myText.setFocus();
					} // end if
				} // end if
			} // end keyReleased()

			@Override
			public void keyPressed(KeyEvent keyEvent) {
			} // end keyPressed()
		} // end new
		);

Damit wird das von dir gewünschte Verhalten durchgeführt

[EDIT]
Das Problem in deinem Fall war, dass du die deslektierung in der Methode "keyPressed" gemacht hast, statt in der Methode "keyReleased"
[/EDIT]
 
Zuletzt bearbeitet:

reibi

Top Contributor
Hallo Sonecc

Sehr interessanter Tip - is aber nich ganz meine Idee.

Das Nullte Item soll schon mit der Pfeiltaste selectiert werden können, erst wenn danach die Pfeil-OBEN-taste gedrückt wird, soll die Aktion passieren.
Weiss nich wie ich das mit keyreleased hinkriegen soll

Haste noch ne Idee?


Grüsse ;-)
 

Sonecc

Gesperrter Benutzer
Java:
		myList.addKeyListener(new KeyListener() {

			@Override
			public void keyReleased(KeyEvent keyEvent) {
				Integer lastSelectionIndex = (Integer) myList.getData("lastSelectionIndex");
				myList.setData("lastSelectionIndex", Integer.valueOf(myList.getSelectionIndex()));
				if (keyEvent.keyCode == SWT.CR) {
					if (myList.getSelectionIndex() > -1) {
						myText.setText(myList.getItem(myList.getSelectionIndex()));

						myList.deselectAll();
						myText.setFocus();
					} // end if
				} // end if
				if (keyEvent.keyCode == SWT.ARROW_UP) {
					if (lastSelectionIndex != null && lastSelectionIndex.intValue() == 0 || lastSelectionIndex == null) {
						if (myList.getSelectionIndex() == 0) {
							myText.setText(myList.getItem(0));
							myList.deselectAll();
							myText.setFocus();
						} // end if
					}
				} // end if
			} // end keyReleased()

			@Override
			public void keyPressed(KeyEvent keyEvent) {
			} // end keyPressed()
		} // end new
		);

Der Trick ist, die letzte Selection zu sichern und entsprechend zu prüfen

Zu beachten ist allerdings, dass das ganze weiterhin in der keyReleased Methode geschehen muss
 

reibi

Top Contributor
mit dem "setData" hab ich wieder was gelernt.

Klasse Sache was man alles machen kann - wär ich allein NIE drauf gekommen.

;-)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Obseved List mit ListView (Dateiliste) AWT, Swing, JavaFX & SWT 4
AmsananKING JavaFX Quiz cant fill List AWT, Swing, JavaFX & SWT 1
L Swing Wert vom Textfield in Array List hinzufügen AWT, Swing, JavaFX & SWT 2
M List Listener AWT, Swing, JavaFX & SWT 37
Q-bert Doppelclick auf einem List item AWT, Swing, JavaFX & SWT 9
H Java FX List<AlbumsBean> in FXML TableView AWT, Swing, JavaFX & SWT 37
J private statische List - Datenbankverbindung AWT, Swing, JavaFX & SWT 2
L JavaFX List oder TableView Größe dynamisch anpassen? AWT, Swing, JavaFX & SWT 4
offi Swing Shuttle List AWT, Swing, JavaFX & SWT 9
A JFace/SWT: ListViewer Inhalt nach Selection in zweitem List Viewer aktualisieren! AWT, Swing, JavaFX & SWT 5
D Swing ArrayList in Jlist/ List oder Array in JList/List AWT, Swing, JavaFX & SWT 5
B Map, Set oder List in GUI ausgeben AWT, Swing, JavaFX & SWT 5
G AWT List AWT, Swing, JavaFX & SWT 4
yvesdaeschle List Control mit "card"-Ansicht AWT, Swing, JavaFX & SWT 7
S AWT AWT.List bug oder feature AWT, Swing, JavaFX & SWT 4
E Keine Ausgabe auf Console und List AWT, Swing, JavaFX & SWT 13
P Kennt awt.list keine Tastatureingabe? AWT, Swing, JavaFX & SWT 3
E werte aus List auslesen AWT, Swing, JavaFX & SWT 2
S JTree aus List<File> erstellen AWT, Swing, JavaFX & SWT 8
P List in JTextField ausgeben AWT, Swing, JavaFX & SWT 8
S AWT List: Items überschreiben? AWT, Swing, JavaFX & SWT 6
H SWT Zeilenumbruch in List AWT, Swing, JavaFX & SWT 9
M SWT keine Scrollbar bei widgets.List und GridLayout AWT, Swing, JavaFX & SWT 2
M List in JTree umwandeln AWT, Swing, JavaFX & SWT 10
L Swing JList - Warum Vector und nicht List ? AWT, Swing, JavaFX & SWT 4
P List-Einträge auslesen AWT, Swing, JavaFX & SWT 4
S List<String> in JTextArea! AWT, Swing, JavaFX & SWT 4
I List aus einer JList AWT, Swing, JavaFX & SWT 3
G Objekte in SWT List AWT, Swing, JavaFX & SWT 3
S List übertragen in Label? AWT, Swing, JavaFX & SWT 4
S List Elemente AWT, Swing, JavaFX & SWT 4
G Drag And Drop von Component (List, Tree) zum Desktop AWT, Swing, JavaFX & SWT 2
B List, Item makieren per rechtsklick AWT, Swing, JavaFX & SWT 3
L Renderer mit nativen komponenten in tabelle / tree / list AWT, Swing, JavaFX & SWT 4
M Array List in JTree AWT, Swing, JavaFX & SWT 2
G Frage zur List mit chars AWT, Swing, JavaFX & SWT 7
C Menue verschwindet hinter AWT-List Box.wie beheben? AWT, Swing, JavaFX & SWT 3
S List mit mehrfarbiger Beschriftung AWT, Swing, JavaFX & SWT 2
G AWT: List mehrere Spalten. AWT, Swing, JavaFX & SWT 8
O java.awt.list - string ändern AWT, Swing, JavaFX & SWT 2
P Image und Text in einer List anzeigen AWT, Swing, JavaFX & SWT 12
I Farbe bei List und TextArea AWT, Swing, JavaFX & SWT 1
Juelin Problem mit TextField.requestFocus(); AWT, Swing, JavaFX & SWT 17
Juelin Problem beim Laden Controller AWT, Swing, JavaFX & SWT 2
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
olfibits JavaFX Problem mit HTMLEditor AWT, Swing, JavaFX & SWT 0
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
N Swing Problem mit loop AWT, Swing, JavaFX & SWT 2
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Swing Splitpane Problem AWT, Swing, JavaFX & SWT 1
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
N JavaFX Stranges Problem mit der Autoscroll-Eigenschaft von Textareas AWT, Swing, JavaFX & SWT 0
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
J JavaFX Intersect Problem mit Shapes AWT, Swing, JavaFX & SWT 10
R JavaFX MediaPlayer AVI-Problem AWT, Swing, JavaFX & SWT 1
M Swing Problem mit ListCellRenderer AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen


Oben