Listener Problem im JFrame

Status
Nicht offen für weitere Antworten.

VipViper2000

Aktives Mitglied
Hi Leute!

Ich weiss, das Thema ist schon viel diskutiert worden und ich hab auch schon die Suche bemüht. Aber entweder war bei den Posts keine Lsg. bei rumgekommen oder diejenigen habs dann doch irgendwie ganz anders gemacht.

Mein Problem: In meiner Anwendung, welche eine Videoverwaltungsprogramm ist, gibts jede Menge JPanels, TextFelder, Buttons etc. Jetzt wollte ich gern "HotKeys" realisieren, z.B.: Es drückt jemand F5 und alle Filme in der Datenbank werden angezeigt.

Das Problem ist ja, dass wenn ich einen KeyListener an meinem JFrame registriere, muss dieses auch den Focus haben. Aber das ist schwierig zu bewerkstelligen ( wahrscheinlich sogar unmöglich, kA ). Wie macht man das also gescheit?? Das man eben zu jeder Zeit und egal in welcher Komponente man sich befindet ein KeyEvent auslösen kann ( ausser jetzt jedes Element mit nem KeyListener zu versehen :noe: ).

Gruß und gute Nacht ( bzw. guten Morgen ),
VipViper2000
 

André Uhres

Top Contributor
How to Use Key Bindings
Code:
import javax.swing.*;
import java.awt.event.*;
...
public class Test extends JFrame {
...
        jMenuBar1 = new JMenuBar();
        jMenu1 = new JMenu("Menu");
        jMenuItem1 = new JMenuItem("Item");
        jMenuItem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0));
        jMenuItem1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);
        jMenuBar1.add(jMenu1);
        setJMenuBar(jMenuBar1);
...    
    private void jMenuItem1ActionPerformed(ActionEvent evt) {
        System.out.println("F5");
    }
...
    private JMenu jMenu1;
    private JMenuBar jMenuBar1;
    private JMenuItem jMenuItem1;
...
}
Code:
       Action anAction = new AbstractAction(){
            public void actionPerformed(ActionEvent e) {
                System.out.println("F2");
            }
        };
        mainPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
                KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0), "doSomething");
        mainPanel.getActionMap().put("doSomething", anAction);
 

VipViper2000

Aktives Mitglied
Moin!

Super, das macht genau das, was ich wollte. Aber da wäre ich nie drauf gekommen und ich muss auch erst noch verstehen warum das so funktioniert. Also mal genauer nachlesen, was eigentlich diese inputMaps und actionMaps sind.

Aber eine Frage hab ich noch: Es ist ja im Prinzip ein schlechter Stil, wenn ich die Eventbehandlung gleich in meinem Gui - Objekt erledige. Deshalb hab ich eine neue Klasse gemacht, die von AbstractAction erbt. Das "Problem": Wie schaffe ich es, dass ich z.B. F3 und F4 auseinanderhalten kann, wenn ich beide Tasten auf mein HotKeys Objekt mappe? Weil ich bekomme als Source (logischerweise) nicht die Taste sondern eben das Panel, was mir aber nichts bringt.

Wie löst man sowas??
 

André Uhres

Top Contributor
Die Klasse , die von AbstractAction erbt, führt einfach die Aktion aus für die sie bestimmt ist.
Wenn du eine andere Aktion willst, legst du eben eine andere Action-Klasse an :wink:
 

VipViper2000

Aktives Mitglied
Also ich habs jetzt etwas anders gelöst, um nicht in einem Wust von (kleinen) Klassen zu ersticken: Ich habe eine Klasse HotKey gemacht, die von AbstractAction erbt. Dem Konstruktor dieser Klasse übergebe ich das ausgelöste KeyEvent und schaue dann einfach in der actionPerformed, welche Aktion ausgeführt werden muss. So kann ich das alles in einer Klasse lösen.

Gruß,
VipViper2000
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
kaoZ Swing Architektonisches Problem / Listener / MVC AWT, Swing, JavaFX & SWT 14
H Problem mit dem Action listener.... AWT, Swing, JavaFX & SWT 2
El_Lobo Swing Problem bei Methodenaufruf in innerer Klasse bei Listener AWT, Swing, JavaFX & SWT 3
P JTabel Listener Problem / Editierbarkeit AWT, Swing, JavaFX & SWT 8
G 2 Panels, 2 Listener, 1 Problem AWT, Swing, JavaFX & SWT 2
F Problem mit Action Listener in privater inneren Klasse AWT, Swing, JavaFX & SWT 6
M Listener Problem AWT, Swing, JavaFX & SWT 11
P SWT unelegant? Problem mit Listener.eventHandle(Event e) AWT, Swing, JavaFX & SWT 10
G Event / Listener problem AWT, Swing, JavaFX & SWT 9
S Problem mit Listener und Tab-Inhalt auslesen! AWT, Swing, JavaFX & SWT 8
padde479 MenuItem MouseEvent/-Listener AWT, Swing, JavaFX & SWT 5
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
J Key-Listener in Java AWT, Swing, JavaFX & SWT 37
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
M List Listener AWT, Swing, JavaFX & SWT 37
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
U Funktionsweise Listener AWT, Swing, JavaFX & SWT 1
L TextField Listener AWT, Swing, JavaFX & SWT 13
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
Salo JTabel Selection listener Bsp. AWT, Swing, JavaFX & SWT 5
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
J Action Listener Rückgabewert AWT, Swing, JavaFX & SWT 14
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
T Swing Methode in Listener aufrufen AWT, Swing, JavaFX & SWT 3
S Swing Tabellen - Listener & richtige Row AWT, Swing, JavaFX & SWT 3
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
S Erste Schritte mit GUI - Fileverarbeitung, Listener,... AWT, Swing, JavaFX & SWT 10
M JButton - Listener AWT, Swing, JavaFX & SWT 1
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Focus Listener für gesamte Scene AWT, Swing, JavaFX & SWT 1
M Key Listener reagiert nicht AWT, Swing, JavaFX & SWT 4
F In Action Listener TextFields einlesen und prüfen. Abbruch bei falschen Eingaben. Wie mache ich das? AWT, Swing, JavaFX & SWT 2
M Listener funktioniert nicht AWT, Swing, JavaFX & SWT 7
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
llabusch Event Handling Listener spielt verrückt AWT, Swing, JavaFX & SWT 8
H org.eclipse.swt.widgets.Scale MouseRelease listener AWT, Swing, JavaFX & SWT 1
MaDDin-94 Swing Listener reagiert nicht immer AWT, Swing, JavaFX & SWT 2
A JLabel im Listener färben AWT, Swing, JavaFX & SWT 11
M Key-,... Listener funktioniert nicht immer AWT, Swing, JavaFX & SWT 2
P Event Handling Listener beim öffnen von einem JPopupMenu AWT, Swing, JavaFX & SWT 3
A Listener für JGTextField AWT, Swing, JavaFX & SWT 2
J Programmierstil: Kommunikation Listener und GUI AWT, Swing, JavaFX & SWT 3
B JTable Renderer / Listener AWT, Swing, JavaFX & SWT 7
M Swing JList Listener AWT, Swing, JavaFX & SWT 20
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
E Listener AWT, Swing, JavaFX & SWT 3
M SWING Listener ohne Wirkung AWT, Swing, JavaFX & SWT 2
P Listener Auswahl Tabelle AWT, Swing, JavaFX & SWT 6
P JPanel- Listener durch JTextArea aktivieren AWT, Swing, JavaFX & SWT 8
J Swing dragging listener AWT, Swing, JavaFX & SWT 5
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
M Fenster schließen - Listener AWT, Swing, JavaFX & SWT 5
G SWT TreeViewer - drop listener austauschen AWT, Swing, JavaFX & SWT 2
S Action Listener in innerer Klasse ausführen. AWT, Swing, JavaFX & SWT 8
J Sinn eines Selection Listener AWT, Swing, JavaFX & SWT 5
M JList mit DefaultListModel und listener AWT, Swing, JavaFX & SWT 4
M comboBox Listener? AWT, Swing, JavaFX & SWT 2
T Listener in anderen Panel deaktivieren AWT, Swing, JavaFX & SWT 3
A Swing Suche Listener für beliebige Änderung an GUI Items/Controls AWT, Swing, JavaFX & SWT 8
T SWT: Listener auf einem Button reagiert nicht AWT, Swing, JavaFX & SWT 2
L Swing JTextField Content-Listener AWT, Swing, JavaFX & SWT 4
P AWT Wie kann mein listener den Inhalt eines anderen Textfelds ändern? AWT, Swing, JavaFX & SWT 10
M Ansätze zur Kombination mehrerer Listener für Interaktion AWT, Swing, JavaFX & SWT 19
C JLabel Listener auf Textänderung? AWT, Swing, JavaFX & SWT 5
M Mouse Wheel Listener reagiert mehrmals AWT, Swing, JavaFX & SWT 5
F SWT Button listener richtig erstellen AWT, Swing, JavaFX & SWT 2
S Wem füge ich welchen Listener hinzu? AWT, Swing, JavaFX & SWT 4
R Durch Listener lässt sich Programm nicht mehr ausführen AWT, Swing, JavaFX & SWT 4
T Callback vs. Event listener AWT, Swing, JavaFX & SWT 7
S Swing JTree und seine Listener... AWT, Swing, JavaFX & SWT 4
E JComboBox Listener AWT, Swing, JavaFX & SWT 2
AyKay SWT (alle) Listener bzw. ModifyEventListener entfernen AWT, Swing, JavaFX & SWT 2
S jTextField Listener AWT, Swing, JavaFX & SWT 7
E Listener, werte in andere Klasse übernehmen AWT, Swing, JavaFX & SWT 11
L Action listener in bestimmter spalte AWT, Swing, JavaFX & SWT 2
J AWT Action Listener etc. AWT, Swing, JavaFX & SWT 7
xehpuk Swing Listener für JPopupMenu AWT, Swing, JavaFX & SWT 3
F JCalendar mouseclick listener AWT, Swing, JavaFX & SWT 2
W AWT Listener bei TrayIcon AWT, Swing, JavaFX & SWT 2
K Swing Listener bei JPopupMenu AWT, Swing, JavaFX & SWT 9
E Swing JTextField Listener nach Update?! AWT, Swing, JavaFX & SWT 2
T TransformGroup Listener AWT, Swing, JavaFX & SWT 8
O Swing JTable Listener AWT, Swing, JavaFX & SWT 2
O Collection Listener AWT, Swing, JavaFX & SWT 6
L AWT Paint(g) im Listener aufrufen AWT, Swing, JavaFX & SWT 2
G JTree - Observer oder Listener? AWT, Swing, JavaFX & SWT 6
Avalarion SWT Listener auf Label oder Text Teile AWT, Swing, JavaFX & SWT 10
C Ermitteln ob JComponent einen Listener besitzt AWT, Swing, JavaFX & SWT 2
L JTextfield Listener AWT, Swing, JavaFX & SWT 3
C Listener Probleme AWT, Swing, JavaFX & SWT 6
N Listener für Variable AWT, Swing, JavaFX & SWT 4
C Swing Listener für TabPanel AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben