Der KeyListener Löst kein event aus

Fridolin111

Fridolin111

Mitglied
Ich sitze gerade an einer Gui und versuche verzweifelt einen KeyListener hinzukrigen.
Aber aus irgendeinem grund wird das event nicht ausgelöst.
Weiß jemand warum?
(Ich habe den KeyListener in Zeile 201 definiert)

Gui:
package de.gui;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import de.datamanagment.Categorys;
import de.datamanagment.DatamanagmentSaves;
import de.datamanagment.Entry;
import de.main.Main;
import de.sqlite.SQLiteManager;

public class Gui extends JFrame implements KeyListener {
    private static final long serialVersionUID = -4066404451884471989L;

    public static boolean GuiIsOpen = false;
//    private JFrame frame = new JFrame();
    private JLabel topLayer = new JLabel();
    @SuppressWarnings("rawtypes")
    private JList list1 = new JList();
    @SuppressWarnings("rawtypes")
    private DefaultListModel list1Model = new DefaultListModel();
    private JScrollPane list1ScrollPane = new JScrollPane(list1);
    private JScrollBar ScrolBar = new JScrollBar();
    private JLabel lName = new JLabel();
    private JLabel lTyp = new JLabel();
    @SuppressWarnings("rawtypes")
    private JList list2 = new JList();
    @SuppressWarnings("rawtypes")
    private DefaultListModel list2Model = new DefaultListModel();
    private JScrollPane list2ScrollPane = new JScrollPane(list2);
    private JButton deletEntry = new JButton();
    private JButton openEntry = new JButton();
    private JLabel lAusgewaehltenEintrag = new JLabel();
    private JButton rename = new JButton();
    private JButton newCategory = new JButton();
    private JButton newEntry = new JButton();
    // Ende Attribute

    @SuppressWarnings("unchecked")
    public Gui() {
        super();
        System.out.println();
        if (!GuiIsOpen) {
            GuiIsOpen = true;

            Main.newPaswort = null;
            Main.login = null;
            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            int frameWidth = 700;
            int frameHeight = 500;
            setSize(frameWidth, frameHeight);
            Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
            int x = (d.width - getSize().width) / 2;
            int y = (d.height - getSize().height) / 2;
            setLocation(x, y);
            setTitle("Passwortmanager");
            setResizable(false);
            Container cp = getContentPane();
            cp.setLayout(null);
            // Anfang Komponenten

            topLayer.setBounds(225, 8, 250, 25);
            topLayer.setText("Passwortmanager");
            topLayer.setFont(new Font("Dialog", Font.BOLD, 20));
            topLayer.setHorizontalAlignment(SwingConstants.CENTER);
            cp.add(topLayer);
            cp.setBackground(Color.WHITE);
            setUndecorated(false);
            list1.setModel(list1Model);
            list1ScrollPane.setBounds(30, 70, 278, 370);
//            list1Model.addElement("1");
//            list1Model.addElement("2");
//            list1Model.addElement("3");
//            list1Model.addElement("4");
            cp.add(list1ScrollPane);
            ScrolBar.setBounds(8, 58, 17, 380);
            ScrolBar.setOrientation(SwingConstants.VERTICAL);
            cp.add(ScrolBar);
            lName.setBounds(32, 50, 42, 19);
            lName.setText("Name");
            cp.add(lName);
            lTyp.setBounds(312, 50, 49, 19);
            lTyp.setText("Typ");
            cp.add(lTyp);
            list2.setModel(list2Model);
            list2ScrollPane.setBounds(312, 72, 121, 369);
            cp.add(list2ScrollPane);
            deletEntry.setBounds(440, 72, 242, 33);
            deletEntry.setText("... löschen (entf)");
            deletEntry.setMargin(new Insets(2, 2, 2, 2));
            deletEntry.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    deletEntry(evt);
                }
            });
            cp.add(deletEntry);
            openEntry.setBounds(440, 112, 242, 33);
            openEntry.setText("... öffnen (enter)");
            openEntry.setMargin(new Insets(2, 2, 2, 2));
            openEntry.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    opoenEntry(evt);
                }
            });
            cp.add(openEntry);
            lAusgewaehltenEintrag.setBounds(440, 48, 242, 19);
            lAusgewaehltenEintrag.setText("Ausgewählten Eintrag...");
            cp.add(lAusgewaehltenEintrag);
            rename.setBounds(440, 152, 242, 33);
            rename.setText("... umbenenen (u)");
            rename.setMargin(new Insets(2, 2, 2, 2));
            rename.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    renameEntry(evt);
                }
            });
            cp.add(rename);

            newEntry.setBounds(440, 232, 242, 33);
            newEntry.setText("Neuer Eintrag");
            newEntry.setMargin(new Insets(2, 2, 2, 2));
            newEntry.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {

                }
            });
            cp.add(newEntry);

            newCategory.setBounds(440, 272, 242, 33);
            newCategory.setText("Neue Kategory");
            newCategory.setMargin(new Insets(2, 2, 2, 2));
            newCategory.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {

                }
            });
            cp.add(newCategory);

            addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent evt) {
                    windos_closed(evt);
                }
            });

            ScrolBar.addAdjustmentListener(new AdjustmentListener() {
                public void adjustmentValueChanged(AdjustmentEvent evt) {

                }

            });

            list1.addListSelectionListener(new ListSelectionListener() {
                public void valueChanged(ListSelectionEvent evt) {
                    list2.setSelectedIndex(list1.getSelectedIndex());
                }
            });

            list2.addListSelectionListener(new ListSelectionListener() {
                public void valueChanged(ListSelectionEvent evt) {
                    list1.setSelectedIndex(list2.getSelectedIndex());
                }
            });

            for (Entry ent : DatamanagmentSaves.entrys) {
                list1Model.addElement(ent.website);
                list2Model.addElement("Eintrag");
            }
            for (Categorys cat : DatamanagmentSaves.categorys) {
                System.out.println(cat.catName);
                if (cat.getMother() != null && cat.getMother().catName.equals("main")) {
                    list1Model.addElement(cat.catName);
                    list2Model.addElement("Category");
                }
            }

            this.addKeyListener(new MyKeyListener());
            setVisible(true);
        }

    }

    public void windos_closed(WindowEvent evt) {
        System.out.println("closed");
        SQLiteManager.disconnect();
        System.exit(0);
    }

    public void deletEntry(ActionEvent evt) {

    }

    public void opoenEntry(ActionEvent evt) {

    }

    public void renameEntry(ActionEvent evt) {

    }

    @Override
    public void keyTyped(KeyEvent evt) {
        System.out.println("key");
    }

    @Override
    public void keyPressed(KeyEvent evt) {
        int key = evt.getKeyCode();
        System.out.println(key);
    }

    @Override
    public void keyReleased(KeyEvent evt) {
        // TODO Auto-generated method stub

    }

}

class MyKeyListener extends KeyAdapter {

    public void keyPressed(KeyEvent event) {
        System.out.println("asdf");

    }

}
 
L

LimDul

Top Contributor
Das Problem ist vermutlich, das der KeyListener auf dem JFrame nur auslöst wenn der Frame selber und nicht irgendeins der Elemente auf dem JFrame den Fokus hat.
 
kneitzel

kneitzel

Top Contributor
Es gibt viele Möglichkeiten.
a) Man kann einen Listener bei mehreren Elementen eintragen. Dann wäre es egal, welches Element den Listener hat. So könntest Du z.B. durch alle Elemente durchgehen um dann den Listener hinzu zu fügen.
b) Du kann einen Listener global eintragen - das gilt dann aber für die ganze Applikation, also auch bei mehreren Fenstern und so. Aber wenn die Aktion immer gleich ist, ist das natürlich eine elegante Lösung:
Java:
        KeyboardFocusManager.getCurrentKeyboardFocusManager()
                .addKeyEventDispatcher(e -> {
                        // Whatever ...
                    });
Dabei aber auch KeyEventDispatcher beachten: https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/KeyEventDispatcher.html Die Methode gibt ein boolean zurück, die bestimmt, ob weitere Aktionen stattfinden sollen oder nicht.

Das wären so direkt zwei Möglichkeiten, die mir einfallen würden...
 
Fridolin111

Fridolin111

Mitglied
zu möglichkeit b). Kann man da überprüfen, ob die Taste hoch oder runter gelassen wird?
 
kneitzel

kneitzel

Top Contributor
Ja, du hast ja als Parameter (in meinem Beispiel das e vom Lambda Ausdruck) ein KeyEvent

Und da wird das auch beschrieben - so solltest Du 3 Event bekommen:
KEY_PRESSED
KEY_TYPED (is only generated if a valid Unicode character could be generated.)
KEY_RELEASED

Und ich meine über getId() kannst Du prüfen, ob es ein KeyEvent.KEY_PRESSED Event ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
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
L Focus für KeyListener auf verschiedene Panels AWT, Swing, JavaFX & SWT 2
M Fehler beim Zugriff von awt-KeyListener auf swt-Shell AWT, Swing, JavaFX & SWT 2
I KeyListener funktioniert nicht! AWT, Swing, JavaFX & SWT 2
Kr0e KeyListener oder sowas ähnliches ? AWT, Swing, JavaFX & SWT 2
D Keylistener, Taste überprüfen AWT, Swing, JavaFX & SWT 21

Ähnliche Java Themen

Anzeige


Oben