KeyListener wird ignoriert

Status
Nicht offen für weitere Antworten.

JDuke

Mitglied
Halloo!

Hab folgendes Problem, bei meinem JFrame wird nicht auf den KeyListener reagiert...


Code:
     super.addKeyListener(
       new KeyAdapter() {
         public void keyPressed(KeyEvent event)
         {
           if (event.getKeyCode() == KeyEvent.VK_ESCAPE) {
             setVisible(false);
             [...]
           }
         }
       }
     );

    listenerPanel.add(jsVertical);
    listenerPanel.add(jsHorizontal);
    cp = getContentPane();
    cp.setLayout(new BorderLayout());
    cp.add(listenerPanel, BorderLayout.CENTER);
    cp.add(jlbActualAction,BorderLayout.SOUTH);
    setVisible(true);


Hab schon alles probiert. Ohne Erfolg.

Greetz
J
 

Sky

Top Contributor
Ich habe in Zeile 2 das 'super' durch 'this' ersetzt und schon hat es funktioniert.
 

JDuke

Mitglied
Danke erst mal für die schnelle Antwort...
Hier noch mal der Komplette code vielleicht liegt der Fehler ja wo anders

Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class TestGUI extends JFrame{

    Container cp;
    JPanel listenerPanel;
    JSlider jsVertical;
    JSlider jsHorizontal;
    JLabel jlbActualAction;

    public TestGUI(){
        super("KeyListenerTest");
        setSize(300,300);
        setLocationRelativeTo(null);


        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent evt){System.exit(1);
        }
    });

    listenerPanel = new JPanel();
    listenerPanel.setLayout(new FlowLayout());
    jsVertical = new JSlider(1,-10,10,0);
    jsHorizontal = new JSlider(0,-10,10,0);
    jsVertical.setValueIsAdjusting(false);
    jsHorizontal.setValueIsAdjusting(false);
    jlbActualAction = new JLabel("Nix");

    this.addKeyListener(new KeyAdapter(){
        public void keyPressed(KeyEvent e){
            int key = e.getKeyCode();
            int w = KeyEvent.VK_W;
            System.out.println("KeyCode:"+key+"\nTaste:"+w);
            if(key==w){           //-- Code für Up
                //jsVertical.setValue(jsVertical.getValue()+1);
                jlbActualAction.setText("Up Pressed...");
            }

            if(e.getKeyCode() == KeyEvent.VK_S){         //-- Code für Down
                //jsVertical.setValue(jsVertical.getValue()-1);
                jlbActualAction.setText("Down Pressed...");
            }

            if(e.getKeyCode() == KeyEvent.VK_A){         //-- Code für Left
                //jsHorizontal.setValue(jsHorizontal.getValue()-1);
                jlbActualAction.setText("Left Pressed...");
            }

            if(e.getKeyCode() == KeyEvent.VK_D){         //-- Code für Right
                //jsHorizontal.setValue(jsHorizontal.getValue()+1);
                jlbActualAction.setText("Right released...");
            }

        }
         public void keyReleased(KeyEvent e){
            if(e.getKeyCode() == KeyEvent.VK_UP){           //-- Code für Up
                //jsVertical.setValue(0);
                jlbActualAction.setText("Up released...");
            }

            if(e.getKeyCode() == KeyEvent.VK_DOWN){         //-- Code für Down
                //jsVertical.setValue(0);
                jlbActualAction.setText("Down released...");
            }

            if(e.getKeyCode() == KeyEvent.VK_LEFT){         //-- Code für Links
                //jsHorizontal.setValue(0);
                jlbActualAction.setText("Left released...");
            }

            if(e.getKeyCode() == KeyEvent.VK_RIGHT){        //-- Code für Rechts
                //jsHorizontal.setValue(0);
                jlbActualAction.setText("Right released...");
            }

         }
    });

    listenerPanel.add(jsVertical);
    listenerPanel.add(jsHorizontal);

    cp = getContentPane();
    cp.setLayout(new BorderLayout());
    cp.add(listenerPanel, BorderLayout.CENTER);
    cp.add(jlbActualAction,BorderLayout.SOUTH);
    setVisible(true);
    }

    public static void main(String[] args){
        new TestGUI();
    }

}

greetz
J
 

DesertFox

Bekanntes Mitglied
repainten, mehr net, also nach den setText() aufrufen in der Anonymen Klasse einfach nochmal repaint() aufrufen, dann sollte es klappen
 

JDuke

Mitglied
???:L sorry aber es ändert sich nichts... noch immer keine Reaktion auf keyevents.

CelikBlek hat gesagt.:
nach einer repaint muss es funzen

es geht nicht um das repaint bzw da JLabel.setText()... es geht nur darum dass der keylistener erst überhaupt mal reagiert.
könnte genau so ein System.out.println hinschreiben - funzt trotzdem nicht...
 
B

bygones

Gast
bei einem setText von einem Label muss kein repaint hin... dat geht von alleine.

Ich geh mal davon aus, dass der Frame nicht den Focus hat, sondern eine seiner Components -> der Frame kann nicht auf Key Ereignisse reagieren
 

Niki

Top Contributor
Beispiel:

Code:
JComponent c = (JComponent)getContentPane();
InputMap im = c.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap am = c.getActionMap();

im.put(KeyStroke.getKeystroke([DEIN KEYSTROKE]), "identifier");
am.put("identifier", new AbstractAction(){
    public void actionPerformed(ActionEvent e){
        //tu das was du nach dem keyEvent tun willst
    }
});

Ich habe alles so implementiert, es funktioniert nur dann nicht, wenn der Focus in einer Component drinnen ist, wo du einen ActionListener bzw. einen KeyListener registriert hast
 

JDuke

Mitglied
Ok hab den Code so eingefügt wie er ist...
:arrow: Auf das Keyereignis wird nur einmal reagiert...
:?: Muss ich das jetz in einen Thread eipacken und dauernd abfragen?

Is ja ne unschöne lösung oder? Gibts da keine bessere Möglichkeit

Mfg
 

thE_29

Top Contributor
Wieso nimmst du net den Vorschlag von mir, da musst du weder in einem Thread rumgurken und es ist egal welche Komponente den Focus hat!
 

JDuke

Mitglied
weil ich da einige befehle nicht verstehe... habs ja schon probiert...

was meinst du mit windowsstartservices und linuxstartservices bzw. welches import benötige ich dazu?
und was bedeutet "strOSystem" [schild=9 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Nix kapier![/schild]

Greetz
 

thE_29

Top Contributor
Aso, na das kannst weglassen!

das alles in der ActionFunkion (//wenn die Taste F5 ist
if (event.paramString().indexOf("F5") != -1)
{
//Windows Funktion
if (strOSystem.compareTo("WINDOWS") == 0)
{
WindowsStartServices();
}
//Linuxfunktionen
else
{
LinuxStartServices();
}
} )

kannst alles weglassen!
Das sind von mir Funktionen ;)
 

JDuke

Mitglied
So habs jetz so gemacht... funktioniert schon ma ganz gut!

mit diesem Code:

Code:
public void eventDispatched(AWTEvent event){

    int ID = event.getID();

    if (ID == KeyEvent.KEY_PRESSED)
    {
      System.out.println("Kompletter EventString:\n  "+event.paramString());
      System.out.println("Gefiltert: "+event.paramString().substring(31,32)+"\n\n");

      if(event.paramString().substring(31,32).equals("W")){
        jlbActualAction.setText("W is pressed...");
        //TODO Action die beim drücken der "W" Taste ausgeführt wird
      }
      if(event.paramString().substring(31,32).equals("S")){
        jlbActualAction.setText("S is pressed...");
        //TODO Action die beim drücken der "S" Taste ausgeführt wird
      }
      if(event.paramString().substring(31,32).equals("A")){
        jlbActualAction.setText("A is pressed...");
        //TODO Action die beim drücken der "A" Taste ausgeführt wird
      }
      if(event.paramString().substring(31,32).equals("D")){
        jlbActualAction.setText("D is pressed...");
        //TODO Action die beim drücken der "D" Taste ausgeführt wird
      }
      if(event.paramString().substring(31,32).equals("X")){
        jlbActualAction.setText("X is pressed...");
        //TODO Action die beim drücken der "X" Taste ausgeführt wird
      }
    }
   }

Ist wiedermal etwas unschön wie ich den Keywert bekomme...
weiß vielleicht jemand wie ich aus dem ParameterString den KeyCode bekomme.
Greetz
 
B

bygones

Gast
kannst doch den event zu einem KeyEvent casten und dann per getKeyCode() das char abfragen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Developer_X AWT KeyListener wird nicht ausgeführt! AWT, Swing, JavaFX & SWT 3
L KeyListener wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 19
D Warum wird der KeyListener nicht angesprochen? AWT, Swing, JavaFX & SWT 10
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
capgeti SWT KeyListener 2 Tasten Problem AWT, Swing, JavaFX & SWT 3
R KeyListener - welcher Komponente hinzufügen AWT, Swing, JavaFX & SWT 5
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

Ähnliche Java Themen

Neue Themen


Oben