Swing F5 Taste neu laden auf ganzen Frame

Christoph74

Bekanntes Mitglied
Hallo,

ich haben einen JFrame mit mehreren (unter)components.
Innerhalb der Frame-Klasse, gibt es eine Methode zum Neu laden der gesamten Daten.

Jetzt möchte ich (ähnlich wie beim Explorer, Firefox o.ä.), dass egal welches JComponent gerade aktiv ist, beim drücken der Taste F5 diese Methode ausgeführt wird.

Wo muss ich den entsprechenden (Key)Listener hinsetzen, damit dieser immer anspricht?

Danke
Christoph
 

Robat

Top Contributor
Da würde ich eher mit KeyBindings arbeiten. Du willst ja eine bestimmte Taste mit einer Funktion belegen. Zumal du bei einem KeyListener Probleme mit dem Fokus der Komponente kriegen könntest.
 

Robat

Top Contributor
Du kannst KeyBindings prinzipiell an jede Komponente hängen.
Java:
public class Main {
    public static void main(String[] args) {
        final JFrame frame = new JFrame("KeyBinding Test");
        frame.setSize(500, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);

        final JPanel root = new JPanel();
        final JTextField field = new JTextField(15);
        root.add(field);
        root.add(new JTextField(15));

        root.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke("ENTER"), "PRINT_AND_CLEAR_FIELD_ACTION");
        root.getActionMap().put("PRINT_AND_CLEAR_FIELD_ACTION", new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("Text was: " + field.getText());
                field.setText("");
            }
        });
        frame.add(root);

        frame.setVisible(true);
    }
}
 

Christoph74

Bekanntes Mitglied
Hallo,

Java:
[/U][/B] 
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
[B][U]

-> war der Schlüssel zum Erfolg.... funzt wunderbar ->

Danke Robat für das Beispiel -> konnte mir alles Relevante für mich daraus ziehen
Christoph
 

lam_tr

Top Contributor
Du kannst KeyBindings prinzipiell an jede Komponente hängen.
Java:
public class Main {
    public static void main(String[] args) {
        final JFrame frame = new JFrame("KeyBinding Test");
        frame.setSize(500, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);

        final JPanel root = new JPanel();
        final JTextField field = new JTextField(15);
        root.add(field);
        root.add(new JTextField(15));

        root.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke("ENTER"), "PRINT_AND_CLEAR_FIELD_ACTION");
        root.getActionMap().put("PRINT_AND_CLEAR_FIELD_ACTION", new AbstractAction() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("Text was: " + field.getText());
                field.setText("");
            }
        });
        frame.add(root);

        frame.setVisible(true);
    }
}

Ich weiß es gehört nicht hierhin, aber kann ich dich auch kurz fragen wie man das in JavaFX macht?
 

Robat

Top Contributor
Spontan wahrscheinlich so:
Java:
HBox root = new HBox();

TextField field = new TextField();
root.getChildren().addAll(field, new TextField());

root.addEventFilter(KeyEvent.KEY_PRESSED, keyEvent -> {
    if(keyEvent.getCode() == KeyCode.ENTER) {
        System.out.println("Text was: " + field.getText());
        field.setText("");
    }
});

primaryStage.setScene(new Scene(root, 500, 500));
primaryStage.show();
 

lam_tr

Top Contributor
Spontan wahrscheinlich so:
Java:
HBox root = new HBox();

TextField field = new TextField();
root.getChildren().addAll(field, new TextField());

root.addEventFilter(KeyEvent.KEY_PRESSED, keyEvent -> {
    if(keyEvent.getCode() == KeyCode.ENTER) {
        System.out.println("Text was: " + field.getText());
        field.setText("");
    }
});

primaryStage.setScene(new Scene(root, 500, 500));
primaryStage.show();
Das wäre aber nicht anderes als
Code:
HBox root = new HBox();

TextField field = new TextField();
root.getChildren().addAll(field, new TextField());
// Deine Variante
root.addEventFilter(KeyEvent.KEY_PRESSED, keyEvent -> {
    if(keyEvent.getCode() == KeyCode.ENTER) {
        System.out.println("Text was: " + field.getText());
        field.setText("");
    }
});
// Meine Variante
root.setOnKeyPressed(keyEvent -> {
    if(keyEvent.getCode() == KeyCode.ENTER) {
        System.out.println("Text was: " + field.getText());
        field.setText("");
    }
});

primaryStage.setScene(new Scene(root, 500, 500));
primaryStage.show();

Es geht mir gerade darum dass ich eine Anwendung habe, die über Escape die aktuelle Panel im StackPane toBack() aufruft. Das Problem ist nur wenn ich die Stage im Fullscreen habe, dann gibts es Komplikation mit Orginalzustand der Stage und toBack() der aktuellen Panels.

Wie kann man sowas umgehen?
 

dzim

Top Contributor
Vielleicht solltest du dir anschauen, wie das Event-Filtering und Event-Handling funktioniert (etwas, was ich übrigens auch immer wieder mal durcheinander bringe und daher ab und an wieder nachlesen muss):

https://stackoverflow.com/questions...fference-between-eventhandler-and-eventfilter
Whenever an event happens, it follows a process to determine which node in the scene graph should handle the event. The process takes these steps:

  • Target selection
  • Route construction
  • Event capturing <- filters are triggered here
  • Event bubbling <- handlers are triggered here
Target Selection Say that your scene contains a pane with a circle. If you click on the circle, the circle becomes the event target.

Route Construction Next, JavaFX creates a route (or an event dispatch chain). In our example the chain would look like stage -> scene -> pane -> circle

Event Capturing The event gets carried through every event filter on the chain. As soon as one of the filters calls consume(), the chain stops and that node becomes the target. If no filter calls consume() the end of the chain (the circle) remains the target.

Event Bubbling Next, the event get pushed through the chain again, but this time from the event target to the stage. So if the pane event filter called consume(), the following event handlers will be hit: pane -> scene -> stage

So the difference is not only when these handlers get activated, but also that event filters can prevent child nodes from receiving events.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
D TAB Taste innerhalb eines JSpinner AWT, Swing, JavaFX & SWT 2
F Event Handling JTextArea auf bestimmte Eingabe reagieren (Return-Taste) AWT, Swing, JavaFX & SWT 2
T JMenu reagiert auf F-Taste AWT, Swing, JavaFX & SWT 6
B JSpinner welche Taste? AWT, Swing, JavaFX & SWT 5
D KeyListener-Problem nach dem "Gedrückthalten" einer Taste AWT, Swing, JavaFX & SWT 10
L AWT KeyListener, Taste gedrückt halten AWT, Swing, JavaFX & SWT 12
Luy Per TAB-Taste aus TextArea wieder raus? AWT, Swing, JavaFX & SWT 5
T Fokus auf CB in Table mit beliebiger Taste AWT, Swing, JavaFX & SWT 12
M Drücken der ALT-Taste wird nur bei jedem zweiten Mal erkannt AWT, Swing, JavaFX & SWT 5
E bei gedrückte Taste --> Bitte nur ein Event auslösen AWT, Swing, JavaFX & SWT 4
O Einem Button eine F-Taste zuweisen AWT, Swing, JavaFX & SWT 5
D Keylistener, Taste überprüfen AWT, Swing, JavaFX & SWT 21
T JList Mehrfachauswahl ohne Drücken der Strg-Taste AWT, Swing, JavaFX & SWT 3
D Wie Taste "ENTER" bei PlainDocument abfangen? AWT, Swing, JavaFX & SWT 2
G Windows Taste in KeyEvent? AWT, Swing, JavaFX & SWT 4
DeeDee0815 F-Taste auf JMenuItem legen AWT, Swing, JavaFX & SWT 2
N entf Taste mit einem Button simulieren in SWT AWT, Swing, JavaFX & SWT 5
R Thread stoppen, nachdem eine Taste gedrückt wird AWT, Swing, JavaFX & SWT 2
S TAB Taste ändern in Enter und deaktivieren im jTextField AWT, Swing, JavaFX & SWT 5
L F10 Taste öffnet das Menü AWT, Swing, JavaFX & SWT 7
Y Aktion während gedrückter Taste AWT, Swing, JavaFX & SWT 2
W Components Focus mit TAB-Taste VERTIKAL bewegen AWT, Swing, JavaFX & SWT 4
P VK_TAB wie nutzen ? [Tabulator Taste] AWT, Swing, JavaFX & SWT 5
B JTextArea und die Tabulator-Taste AWT, Swing, JavaFX & SWT 3
bernd Reihenfolge beim springen mit Tab-Taste ändern! AWT, Swing, JavaFX & SWT 4
bernd Text nach Betätigung der Enter-Taste übertragen AWT, Swing, JavaFX & SWT 8
G JButton mit ENTER Taste klicken AWT, Swing, JavaFX & SWT 7
G Suche einen KeyEvent für die Taste "ä" AWT, Swing, JavaFX & SWT 7
thor_norsk Icons laden nicht in GUI AWT, Swing, JavaFX & SWT 15
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
G JavaFX Wert aus DB lesen, wenn erfolgreich automatisch eine fxml laden, möglich? AWT, Swing, JavaFX & SWT 2
K JavaFX Bildergalerie aus Image Ordner laden AWT, Swing, JavaFX & SWT 3
L JavaFX .fxml laden klappt nicht AWT, Swing, JavaFX & SWT 16
DeBoiJoshua 2D-Grafik Gif Animation will nicht laden AWT, Swing, JavaFX & SWT 1
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
H Images laden nicht AWT, Swing, JavaFX & SWT 14
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
N Swing Image aus Web laden und in Icon umwandeln AWT, Swing, JavaFX & SWT 4
J Bild von anderer Klasse will nicht laden AWT, Swing, JavaFX & SWT 1
F JavaFX PNG aus einem resource Ordner laden AWT, Swing, JavaFX & SWT 8
L JavaFX LoadException beim Laden von JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
F JButtons neu laden AWT, Swing, JavaFX & SWT 4
M AWT Laden von Sprites AWT, Swing, JavaFX & SWT 3
Thallius JTable dynamisch laden? AWT, Swing, JavaFX & SWT 2
@SupressWarnings() JavaFX Bilder in executable jar laden AWT, Swing, JavaFX & SWT 5
S JavaFX Laden des Inhalts AWT, Swing, JavaFX & SWT 1
L JavaFX Verzögerung beim Laden von Daten AWT, Swing, JavaFX & SWT 6
I Scene Builder kann .fxml nicht mehr laden AWT, Swing, JavaFX & SWT 3
S NullPointer Exception beim Laden von Bildern AWT, Swing, JavaFX & SWT 11
X Java Fxml laden AWT, Swing, JavaFX & SWT 4
G Properties automatisch laden AWT, Swing, JavaFX & SWT 10
D JavaFX Gesetzte Variable in einem Controller im Controller laden AWT, Swing, JavaFX & SWT 1
L Graphik nach 100 ms neu laden AWT, Swing, JavaFX & SWT 1
Z JAVAFX Stage über Controller weitergeben um css-file zu laden AWT, Swing, JavaFX & SWT 4
S JavaFX Fenstergrösse automatisch Speichern und Laden AWT, Swing, JavaFX & SWT 4
M Datenbanksätze in ToolTip laden AWT, Swing, JavaFX & SWT 4
A JPanel Bild laden (Porblem mit Dateipfad) AWT, Swing, JavaFX & SWT 2
I Zufallsbilder laden AWT, Swing, JavaFX & SWT 2
D Swing Bei Button Click neues Panel laden AWT, Swing, JavaFX & SWT 3
C Image laden und Speichern - Image wird auf JPanel nicht angezeigt AWT, Swing, JavaFX & SWT 4
X JFrame erst nach dem Laden sichtbar stellen AWT, Swing, JavaFX & SWT 8
N FXML Dokument laden AWT, Swing, JavaFX & SWT 1
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
B Ressourcen laden beim Ausführen der .jar nicht schnell genug AWT, Swing, JavaFX & SWT 2
V JavaFX - fxml-Datei laden (neben CSS) AWT, Swing, JavaFX & SWT 2
T AWT Bild laden und transparent zeichnen AWT, Swing, JavaFX & SWT 2
J Swing Bild laden, Kreise drin malen, Schreiben AWT, Swing, JavaFX & SWT 2
M Swing Elemente im Dialog neu "laden". AWT, Swing, JavaFX & SWT 6
K JLabel nachträglich laden AWT, Swing, JavaFX & SWT 6
T Modell als XML Speichern / Laden AWT, Swing, JavaFX & SWT 9
B Hintergrund laden AWT, Swing, JavaFX & SWT 3
V Laden einer Bitmap / Eclipse-Problem? AWT, Swing, JavaFX & SWT 4
S Font laden, Wort zeichnen und animieren..? AWT, Swing, JavaFX & SWT 2
G Objekte in und aus einer JTable laden AWT, Swing, JavaFX & SWT 5
H 2D-Grafik Bilder laden ist nicht zuverlässig AWT, Swing, JavaFX & SWT 3
V Persistentes Objekt laden Progressbar AWT, Swing, JavaFX & SWT 7
Luk10 Fragen zum Laden von Fonts AWT, Swing, JavaFX & SWT 4
B Swing Laden von serialisierten Objekten (invalid type code AC)) AWT, Swing, JavaFX & SWT 3
N Swing BufferedImage neu laden AWT, Swing, JavaFX & SWT 10
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
T Swing Laden eines Icons auf JButton liefert NullPointerException AWT, Swing, JavaFX & SWT 8
C 2D-Grafik bild aus resource folder laden AWT, Swing, JavaFX & SWT 3
R Image laden sehr langsam AWT, Swing, JavaFX & SWT 7
Luk10 Laden von eingebundenen .png Datein AWT, Swing, JavaFX & SWT 15
S Objekt einmal laden zweimal anzeigen 3d AWT, Swing, JavaFX & SWT 6
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
P Text-Vorschläge für JTextField aus ner Liste laden AWT, Swing, JavaFX & SWT 8
J Bild aus Datei in BufferedImage laden AWT, Swing, JavaFX & SWT 4
S GUI per XML zur Laufzeit laden AWT, Swing, JavaFX & SWT 5
P 2D-Grafik Fehler beim Laden eines Bildes AWT, Swing, JavaFX & SWT 25
X Bild via FileChooser in paint-Methode laden AWT, Swing, JavaFX & SWT 2
B Problem beim laden von Bild mit getResource() AWT, Swing, JavaFX & SWT 3
L Swing Bilder über andere Bilder laden AWT, Swing, JavaFX & SWT 3
M Bild aus .jar Archiv laden geht nicht AWT, Swing, JavaFX & SWT 6
H Swing HTML in einem JEditorPane zeilenweise hinzufügen ohne Inhalt jedes Mal neu zu laden AWT, Swing, JavaFX & SWT 4
D Swing JTable in Datei speichern und laden AWT, Swing, JavaFX & SWT 3
E Laden von Bilddateien erzeugt OutOfMemory Error AWT, Swing, JavaFX & SWT 6
F Swing Zur Laufzeit Bild laden und auf JPanel anzeigen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben