SWT KeyListener 2 Tasten Problem

capgeti

Mitglied
Hallo.
Ich hab auf ein Canvas ein KeyListener gelegt.
Die keys die jeweils gedrückt oder losgelassen werden werden als flag abgespiechert:
Java:
 canvas.addKeyListener( new KeyListener() {
            public void keyPressed(final KeyEvent e) {
                final int code = e.keyCode;
                if (code > 0 && code < 255) {
                    if (!keys[code]) {
                        keys[code] = true;
                        System.out.println("pressed: " + (char)code);
                    }
                }
            }

            public void keyReleased(final KeyEvent e) {
                final int code = e.keyCode;
                if (code > 0 && code < 255) {
                    keys[code] = false;
                    System.out.println("released: " + (char)code);
                }
            }
        });


in einen extra thread wo noch andere sachen erledigt werden, werden unter anderem die keys abgerufen.
Das PROBLEM:

Ich drück d und halte es gedrückt. Die ausgabe kommt das ich d gedrückt hab.
Ich drücke zu d noch s, die ausgabe kommt das s gedrückt wude.

Jetzt lasse ich d los. Und was kommt?
er sagt, das s released wurde und s wieder gedrückt wurde.
letzteres hängt womutlich noch damit zusammen, das ich s wirklich noch gedrückt halte.
Aber d wurde ignoriert, obwohl ich es losgelassen habe.
Das ist äußerst ungünstig, könnt ihr mir helfen?

lg Micha
 

nickname

Bekanntes Mitglied
hi,

Java:
 if (code > 0 && code < 255) {
                    keys[code] = false;
                    System.out.println("released: " + (char)code);
Hier kannst du dir sparen, ein "&&" einzusetzen, denn es wird immer eine Taste geben, die
< 255 ist. Es seindenn es gibt ein Taste < 0.
Java:
 if (code < 255) {
                    keys[code] = false;
                    System.out.println("released: " + (char)code);
Besser so, denn einige wissen nicht, dass && wie folgt funktioniert. Ist der erste ausdruck falsewird der zweite Ausdruck nicht mehr geprüft. Wenn du aber || verwendest, dann wird der zweite
Ausdruck geprüft.

Das gleiche gilt auch für deinen anderen Code. Vllt liegt es auch daran?! Leider kann ich dir im Mom.
nicht weiterhelfen.

gruß nickname
 
G

Gast2

Gast
Ich habe den Code oben mal auf nen JButton gelegt und der Code funktioniert ohne Probleme.
Das von dir beschriebene Verhalten konnte ich bei mir nicht nachvollziehn.
 

capgeti

Mitglied
hi,

Java:
 if (code > 0 && code < 255) {
                    keys[code] = false;
                    System.out.println("released: " + (char)code);
Hier kannst du dir sparen, ein "&&" einzusetzen, denn es wird immer eine Taste geben, die
< 255 ist. Es seindenn es gibt ein Taste < 0.
Java:
 if (code < 255) {
                    keys[code] = false;
                    System.out.println("released: " + (char)code);
Besser so, denn einige wissen nicht, dass && wie folgt funktioniert. Ist der erste ausdruck falsewird der zweite Ausdruck nicht mehr geprüft. Wenn du aber || verwendest, dann wird der zweite
Ausdruck geprüft.

Das gleiche gilt auch für deinen anderen Code. Vllt liegt es auch daran?! Leider kann ich dir im Mom.
nicht weiterhelfen.

gruß nickname


Ich weis wie && und co funktionieren...
Die Abfrage für > 0 && < 255 ist sinnvoll. Zum Beispiel, wenn man alt drück, kommt ein code mit den wert 65*** irgendwas...und das wirft exceptions...Wer weis ob auch werte darunter kommen ^^


Ich habe den Code oben mal auf nen JButton gelegt und der Code funktioniert ohne Probleme.
Das von dir beschriebene Verhalten konnte ich bei mir nicht nachvollziehn.

Naja.... wie du selbst gesagt hast =) Ein JButton ist Swing... und Swing baut ja auf AWT auf... Und AWT != SWT =) ich würde ja gern AWT nutzen, aber ich müsste mir erst ein natives interface basteln, damit ich an den handler komme. aber dazu hab ich NOCH keine lust.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
sparrow Tasten mit Umlauten im KeyListener verhalten sich seltsam AWT, Swing, JavaFX & SWT 4
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
N Keylistener & JComboBox AWT, Swing, JavaFX & SWT 5
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
B Swing KeyListener auf Container? AWT, Swing, JavaFX & SWT 1
T Event Handling KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
A Event Handling Muss ich 'KeyListener' tasuend mal zufügen? AWT, Swing, JavaFX & SWT 7
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
S Keylistener reagiert bei Buttons nicht. AWT, Swing, JavaFX & SWT 8
S KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 2
R KeyListener in mehreren Panels AWT, Swing, JavaFX & SWT 5
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
J JLabel Visible setzen in KeyListener AWT, Swing, JavaFX & SWT 13
X KeyListener AWT, Swing, JavaFX & SWT 0
L KeyListener für JDialog AWT, Swing, JavaFX & SWT 7
N KeyListener funktioniert nicht richitg AWT, Swing, JavaFX & SWT 4
Z SnakeGame Schlange per KeyListener bewegen! AWT, Swing, JavaFX & SWT 10
T KeyListener AWT, Swing, JavaFX & SWT 2
GianaSisters JFrame mit JInternalFrames, Keylistener-Problem AWT, Swing, JavaFX & SWT 9
7 KeyListener tastatur temporär blockieren AWT, Swing, JavaFX & SWT 7
7 AWT problem: KeyListener/ test im Label umändern AWT, Swing, JavaFX & SWT 4
B SWT Problem: Wie kann man für jede TableColumn einen eigenen KeyListener registrieren. AWT, Swing, JavaFX & SWT 1
U Mouse + Keylistener AWT, Swing, JavaFX & SWT 12
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
J JWindow und keylistener AWT, Swing, JavaFX & SWT 1
F JavaFX KeyListener zum Fenster öffnen/schließen AWT, Swing, JavaFX & SWT 9
A Swing KeyEvent mit KeyListener und KeyAdapter kürzer schreiben AWT, Swing, JavaFX & SWT 7
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
C KeyListener AWT, Swing, JavaFX & SWT 5
Doopy Event Handling KeyListener funktioniert nach Restart nicht mehr AWT, Swing, JavaFX & SWT 7
S KeyListener geht nicht AWT, Swing, JavaFX & SWT 12
C Swing KeyListener in JPanel AWT, Swing, JavaFX & SWT 2
A KeyListener Button wechseln & Programm beenden AWT, Swing, JavaFX & SWT 4
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
H Bild mit KeyListener verschieben AWT, Swing, JavaFX & SWT 2
C JTextField KeyListener AWT, Swing, JavaFX & SWT 6
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
E Swing KeyListener implementieren AWT, Swing, JavaFX & SWT 12
P KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 11
M KeyListener richtig implementieren AWT, Swing, JavaFX & SWT 3
T KeyListener AWT, Swing, JavaFX & SWT 4
R KeyListener in JWindow AWT, Swing, JavaFX & SWT 7
T BlueJ KeyListener AWT, Swing, JavaFX & SWT 7
Z KeyListener AWT, Swing, JavaFX & SWT 2
M Swing KeyListener in JTextfield AWT, Swing, JavaFX & SWT 4
C Swing KeyListener für JPanel funktioniert nicht AWT, Swing, JavaFX & SWT 8
VfL_Freak Swing KeyListener, um einen Dialog per ESC zu schließen AWT, Swing, JavaFX & SWT 6
A Keylistener reagiert nicht AWT, Swing, JavaFX & SWT 10
D Problem mit KeyListener AWT, Swing, JavaFX & SWT 2
J KeyListener um auf CTRL-Enter zu reagieren AWT, Swing, JavaFX & SWT 2
L Snake in Java KeyListener Problem AWT, Swing, JavaFX & SWT 30
B "globaler" KeyListener? AWT, Swing, JavaFX & SWT 3
B JTable TableHeader KeyListener AWT, Swing, JavaFX & SWT 4
S Swing KeyListener und JList AWT, Swing, JavaFX & SWT 2
R KeyListener funzt nicht AWT, Swing, JavaFX & SWT 2
X KeyListener AWT, Swing, JavaFX & SWT 4
P KeyListener + Animation AWT, Swing, JavaFX & SWT 2
M Fokus für KeyListener AWT, Swing, JavaFX & SWT 9
V Problem mit KeyListener im Fullscreen-Modus AWT, Swing, JavaFX & SWT 2
M AWT KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 10
C Swing KeyListener reagiert nicht AWT, Swing, JavaFX & SWT 7
K JFrame + KeyListener + Runnable = Fehler AWT, Swing, JavaFX & SWT 3
F Tastenabfrage (KeyListener) AWT, Swing, JavaFX & SWT 2
D KeyListener Problem bei JPanel wechsel AWT, Swing, JavaFX & SWT 2
S Swing JTree mit KeyListener AWT, Swing, JavaFX & SWT 2
L AWT KeyListener, requestFocus und KeyBindings AWT, Swing, JavaFX & SWT 8
E JFrame akzeptiert den KeyListener nicht AWT, Swing, JavaFX & SWT 3
F Swing Problem mit KeyListener||paintComponent() in JFrame AWT, Swing, JavaFX & SWT 12
P Swing KeyListener hört nur manchmal zu AWT, Swing, JavaFX & SWT 2
Screen Focus Problem , KeyListener, TextField , Key AWT, Swing, JavaFX & SWT 4
earlgrey_tea AWT KeyListener bekommt keine Signale AWT, Swing, JavaFX & SWT 3
L Problem mit KeyListener AWT, Swing, JavaFX & SWT 3
A KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 4
D KeyListener-Problem nach dem "Gedrückthalten" einer Taste AWT, Swing, JavaFX & SWT 10
B Swing Keylistener fuer Dialog-Buttons AWT, Swing, JavaFX & SWT 2
B KeyListener Strg+s AWT, Swing, JavaFX & SWT 5
D Globaler Keylistener AWT, Swing, JavaFX & SWT 4
M problem mit keylistener/textarea AWT, Swing, JavaFX & SWT 6
M KeyListener Problem unter Firefox AWT, Swing, JavaFX & SWT 2
L AWT KeyListener, Taste gedrückt halten AWT, Swing, JavaFX & SWT 12
M Komisches Verhalten: JCombobox mit KeyListener AWT, Swing, JavaFX & SWT 13
R KeyListener - welcher Komponente hinzufügen AWT, Swing, JavaFX & SWT 5
Developer_X AWT KeyListener wird nicht ausgeführt! AWT, Swing, JavaFX & SWT 3
N JFrame und KeyListener AWT, Swing, JavaFX & SWT 6
M KeyListener reagiert nach Buttondruck nicht mehr AWT, Swing, JavaFX & SWT 4
A AWT Button verhindert ausführung vom Keylistener AWT, Swing, JavaFX & SWT 4
R KeyListener hinzufügen AWT, Swing, JavaFX & SWT 7
T Swing KeyListener mit mehreren Objekten AWT, Swing, JavaFX & SWT 2
G KeyListener AWT, Swing, JavaFX & SWT 3
E KeyListener AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben