Swing Tastaturereignisse auf gesamten Frame Abfangen

Pacman92

Mitglied
Hallo,

ich habe einen JFrame mit mehreren Buttons / Labeln etc ...

Jetzt will ich, dass egal welches Element den Focus hat, dass ich Tastatureingaben wie einen Nummer oder auch Tastenkombinationen wie Strg + X abfangen kann.

Ist dies überhaupt möglich ??

Schonmal danke für eure Hilfe
 

Pacman92

Mitglied
Ok danke soweit ist es mir klar,

aber ich denke ich habe hier noch einen Denkfehler. Ich kann doch jetzt nicht direkt ein KeyBinding auf den JFrame machen oder? Ich will ja alle Ereignisse für diesen JFrame abfangen
 

Pacman92

Mitglied
Schuldigung aber ich glaub ich stell mich einfach zu hacke an :(

Die KeyBindings kann ich ja nur an eine JComponent festmachen und das Ereigniss wird ausgelöst, wenn die Komponente den Fokus hat oder eine darunterliegende Komponente (habe ich das richtig verstanden?)

Jetzt habe ich aber den Fall das wenn zum Beispiel der Fokus auf BTN1 liegt und ich die 0 drück in LBL1 was reingeschrieben werden soll, in diesem Fall würde ich die KeyBinding ja auf dem Frame brauchen aber das geht ja nicht.

Habe ich irgendwas falsch verstanden??
 
G

Gast2

Gast
Das wird doch in dem Abschnitt alles erklärt :bahnhof:

Java:
    public static void main(String[] args) {
        JFrame frame = new JFrame("Keybindings");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new FlowLayout(FlowLayout.LEFT));

        JButton btn1 = new JButton("Mooeeep");
        JButton btn2 = new JButton("Mooeeep2");
        JButton btn3 = new JButton("Mooeeep3");
        final JLabel lbl1 = new JLabel();
        lbl1.setPreferredSize(new Dimension(100, 16));

        btn1.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("0"), "zeroPressed");
        btn1.getActionMap().put("zeroPressed", new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                lbl1.setText(lbl1.getText() + "0");
            }
        });

        frame.add(btn1);
        frame.add(btn2);
        frame.add(btn3);
        frame.add(lbl1);
        frame.pack();
        frame.setVisible(true);
    }
Kann man bestimmt besser machen, hab auch noch nie damit gearbeitet. Aber das hab ich schnell aus dem Beispielcode der Seite zusammengeschrieben
 
G

Gast2

Gast
Der KeyListener funktioniert nur wenn der JFrame dann auch den Fokus hat. Platzierst du aber z.b. nen Button auf den frame dann hat der Button den Fokus ;)
 

Pacman92

Mitglied
Das funktioniert aber trotzdem doch nur wenn der jeweilige Button in dem Fall btn1 den Fokus hat. Das heist ich müsste diese Keymap für jeden Button registrieren, daher jetzt meine Frage ob man das irgendwie vereinfachen kann oder ob ich es wirklich so machen muss ....

Das wird doch in dem Abschnitt alles erklärt :bahnhof:

Java:
    public static void main(String[] args) {
        JFrame frame = new JFrame("Keybindings");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new FlowLayout(FlowLayout.LEFT));

        JButton btn1 = new JButton("Mooeeep");
        JButton btn2 = new JButton("Mooeeep2");
        JButton btn3 = new JButton("Mooeeep3");
        final JLabel lbl1 = new JLabel();
        lbl1.setPreferredSize(new Dimension(100, 16));

        btn1.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("0"), "zeroPressed");
        btn1.getActionMap().put("zeroPressed", new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                lbl1.setText(lbl1.getText() + "0");
            }
        });

        frame.add(btn1);
        frame.add(btn2);
        frame.add(btn3);
        frame.add(lbl1);
        frame.pack();
        frame.setVisible(true);
    }
Kann man bestimmt besser machen, hab auch noch nie damit gearbeitet. Aber das hab ich schnell aus dem Beispielcode der Seite zusammengeschrieben
 
G

Gast2

Gast
Das funktioniert aber trotzdem doch nur wenn der jeweilige Button in dem Fall btn1 den Fokus hat. Das heist ich müsste diese Keymap für jeden Button registrieren, daher jetzt meine Frage ob man das irgendwie vereinfachen kann oder ob ich es wirklich so machen muss ....

Nö eben nicht das ist ein Hot key der funktioniert auch wenn btn1 den Focus NICHT hat...

mach dir eine eigene Komponente die von JButton erbt und benutz die...
 

Pacman92

Mitglied
Du ich glaub ich stell mich einfach zu blöde an ....

Mit der Vererbung ist mir schon klar aber ich bekomm das halt einfach nicht auf diesem Fall angewandt. :(

Ich habe jetzt auch noch mal nach Beispielen gesucht, damit ich es vieleicht einfach besser verstehe, aber ich finde nix, was direkt auf meinen Fall zu trifft.

Sharing an InputMap or an ActionMap Between Two Components | Example Depot
Hier wird die KeyMap ja auch jeden Button zugewiesen und dass will ich ja gerade vermeiden
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
kodela Tastaturereignisse für Menü- und Anwenderbereich AWT, Swing, JavaFX & SWT 14
M Tastaturereignisse AWT, Swing, JavaFX & SWT 6
S Swing JFormattedTextfield markiert nicht gesamten Inhalt AWT, Swing, JavaFX & SWT 4
T Daten der gesamten Woche anzeigen AWT, Swing, JavaFX & SWT 2
T IllegalComponentStateException The Frame is Displayable AWT, Swing, JavaFX & SWT 8
Fragerjava Frame inhalt komplett löschen AWT, Swing, JavaFX & SWT 4
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
Kotelettklopfer Frame ändert Farbe nicht AWT, Swing, JavaFX & SWT 12
P Swing Zufallsbilder auf Frame ausgeben AWT, Swing, JavaFX & SWT 1
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
R 2D-Grafik Massive Frame Drops beim Benutzen von AffineTransformOp AWT, Swing, JavaFX & SWT 2
C Swing F5 Taste neu laden auf ganzen Frame AWT, Swing, JavaFX & SWT 9
J Genutzte Methoden in einen Frame einbauen AWT, Swing, JavaFX & SWT 21
H Swing Frame an andere Klassen weitergeben AWT, Swing, JavaFX & SWT 4
olfibits Swing JavaFX-Frame in JDesktopPane darstellen? AWT, Swing, JavaFX & SWT 2
F Swing Frame nach vorne holen AWT, Swing, JavaFX & SWT 2
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
K Frame aus anderer Klasse schließen AWT, Swing, JavaFX & SWT 3
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
S Tastatur frame nur nur 1 mal öffnen AWT, Swing, JavaFX & SWT 1
T Swing Java-Frame bei Programmstart NICHT im Vordergrund öffnen AWT, Swing, JavaFX & SWT 2
A Programm nun in ein Frame basteln AWT, Swing, JavaFX & SWT 1
T Frame öffnet nicht AWT, Swing, JavaFX & SWT 1
A Swing GUI - Button soll Frame verändern AWT, Swing, JavaFX & SWT 4
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
Thallius Wer oder was bestimmt welches Frame toFront kommt wenn ein anderes geschlossen wird? AWT, Swing, JavaFX & SWT 8
Z Swing Frame wird geöffnet, aber ist ohne Inhalt AWT, Swing, JavaFX & SWT 0
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
M Internal Frame in den vordergrund AWT, Swing, JavaFX & SWT 4
Tausendsassa Frame öffnet aber zeigt keinen Inhalt... AWT, Swing, JavaFX & SWT 10
Tom299 JavaFX Ähnliche Komponente wie der VB6 Frame? AWT, Swing, JavaFX & SWT 2
L Swing Frame in Thread wird nicht gezeichnet AWT, Swing, JavaFX & SWT 2
K Swing JScrollPane - JScrollBar anzeigen, wenn Frame verkleinert wird AWT, Swing, JavaFX & SWT 3
D Buttons erscheinen nicht auf Frame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
B Frame hängt sich auf trotz invokeLater AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
P Frame friert ein AWT, Swing, JavaFX & SWT 6
Z Frame mit Rechteck! AWT, Swing, JavaFX & SWT 16
Messoras JWindow/Frame durch das man durchklicken kann AWT, Swing, JavaFX & SWT 5
M Swing "Frame.setResizable(false);" verschiebt Content? AWT, Swing, JavaFX & SWT 9
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
J JTable aktuallisieren über anderen Frame AWT, Swing, JavaFX & SWT 6
J JTable Zeile anklicken und neues Frame öffnen AWT, Swing, JavaFX & SWT 4
S Quadrat auf Frame zeichnen AWT, Swing, JavaFX & SWT 2
B JFrame immer an gleicher stelle auf anderem Frame AWT, Swing, JavaFX & SWT 5
F JAVA-EDITOR: Panel in Frame aufnehmen AWT, Swing, JavaFX & SWT 3
B Swing JMenuBar unten in der Frame setzen? AWT, Swing, JavaFX & SWT 15
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
D Buttons erscheinen nicht auf dem zweiten Frame AWT, Swing, JavaFX & SWT 4
X Swing Größe eines Fensters JFrame / Frame AWT, Swing, JavaFX & SWT 5
BRoll Frame- Video einbinden machbar? AWT, Swing, JavaFX & SWT 6
Kandum obj_JMenu.addMenuListener - variable Anzahl an JMenus / menulistenern & frame.setTitle() dynamisch AWT, Swing, JavaFX & SWT 7
B Frame always on top nur auf anderem Frame AWT, Swing, JavaFX & SWT 9
S Aufteilung von JPanels in einem Frame AWT, Swing, JavaFX & SWT 13
K Options-Frame integrieren (zum zuschalten und wegschalten wie geht man da ran? AWT, Swing, JavaFX & SWT 7
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
N Swing Endlosschleife blockt Frame AWT, Swing, JavaFX & SWT 11
B Swing JDialog modal, aber trotzdem Frame auswählbar AWT, Swing, JavaFX & SWT 2
N Swing Frame ungewollt transparent! AWT, Swing, JavaFX & SWT 2
J Kleines Anzeige Problem(nur blanker Frame) AWT, Swing, JavaFX & SWT 22
D Neues Frame öffnen - und dazu altes schließen AWT, Swing, JavaFX & SWT 5
Daniel_L Drop von Dateien auf Frame - welche Drop-Location? AWT, Swing, JavaFX & SWT 2
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
C LookAndFeel Frame updated nicht vollständig AWT, Swing, JavaFX & SWT 9
K 3D-Grafik Canvas ist ein eigener Frame?! AWT, Swing, JavaFX & SWT 13
L Jbutton + jcombobox mit vorhandenen frame verknüfen AWT, Swing, JavaFX & SWT 8
J 2 Bereiche im Frame komplett nutzen - Welchen Layoutmanager? AWT, Swing, JavaFX & SWT 3
Z Swing JTextfield auf Frame AWT, Swing, JavaFX & SWT 13
N Swing Frame mit GlassPane und Popup AWT, Swing, JavaFX & SWT 5
L Frame Schließen und neustarten AWT, Swing, JavaFX & SWT 4
L Mehre Panels einen Frame zuweisen AWT, Swing, JavaFX & SWT 11
P Frame "always on top" und welche GUI? AWT, Swing, JavaFX & SWT 5
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
S JMenuBar Frame Abstand AWT, Swing, JavaFX & SWT 3
J Swing Frame öffnen aus Frame mit JButton AWT, Swing, JavaFX & SWT 2
X Alte Frame-Größe beim wiederholten Aufruf AWT, Swing, JavaFX & SWT 5
M erstes Frame wartet auf die Auswertung eines zweiten AWT, Swing, JavaFX & SWT 8
J Frame-Steuerelement AWT, Swing, JavaFX & SWT 2
L Swing Flackern in Frame bei erstem Klick AWT, Swing, JavaFX & SWT 19
F Hintergrundbild im Frame AWT, Swing, JavaFX & SWT 11
S Zeichnen führt zu transparentem Frame AWT, Swing, JavaFX & SWT 6
S Swing Frame und Klasse extends JPanel - Komponenten zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 18
B Frame im Frame? AWT, Swing, JavaFX & SWT 4
C WindowListener Frame AWT, Swing, JavaFX & SWT 8
P klassenübergreifendes Frame AWT, Swing, JavaFX & SWT 6
B Text soll nich über das Frame hinausgehen AWT, Swing, JavaFX & SWT 5
J Hintergrund Label-Frame AWT, Swing, JavaFX & SWT 3
Spin JFrame/ Frame Drag and Drop AWT, Swing, JavaFX & SWT 13
S Swing Panelgröße anpassen wenn Frame maximiert wird AWT, Swing, JavaFX & SWT 2
K MouseListener für Objekte auf einem Frame AWT, Swing, JavaFX & SWT 4
3 Eigenes Frame/Window programmieren AWT, Swing, JavaFX & SWT 2
A Hintergrund von einem Frame ändern AWT, Swing, JavaFX & SWT 3
D Mehrere JTabel in einem Frame positionieren AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben