Diskuze: FXML KeyEvent

Java Java FXML KeyEvent

Avatar
Jan Rudolf
Člen
Avatar
Jan Rudolf:

Ahoj
Poradil by mi někdo prosím jak bych měl v FXML aplikaci udělat KeyListener a jak zjistit hodnotu stisknuté klávesy???
Prošel jsem web, ale z žádného článku jsem nebyl moudřejší...

 
Odpovědět 7.6.2015 19:39
Avatar
Odpovídá na Jan Rudolf
Petr Štechmüller:

Ahoj,
Každý ovládací prvek v JavaFX je potomek třídy Node, který má možnost nastavit různé listenery. Takže pokud chceš KeyListener ve FXML, tak na místě, kde definuješ ovládací prvek (TextField, ListView...) napíšeš onKeyPressed="". Raději to ukážu na příkladu:

<VBox prefHeight="400.0" prefWidth="600.0"
      xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
        fx:controller="nazevTridyKontroleru">
    <!--Tady definuji TextFiel a k němu keyListener-->
    <TextField onKeyPressed="nazevMetodyVKontroleruKteraReagujeNaStiskKlavesy"/>
</VBox>

Druhá možnost je definovat KeyListener pomocí API. Vytvoříš instanci daného ovládacího prvku a pomocí metody setOnKeyPressed() nastavíš, co se má stát při stisku klávesy. Opět příklad:

TextField textField = new TextField();
textField.setOnKeyPressed(event -> System.out.println(event.getCode()));

Snad jsem Ti pomohl.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 7.6.2015 21:01
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.