NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Jan Rudolf
Člen
Avatar
Jan Rudolf:7.6.2015 19:39

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:7.6.2015 21:01

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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
7.6.2015 21:01
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Jan Rudolf
Člen
Avatar
Odpovídá na Petr Štechmüller
Jan Rudolf:19.6.2015 21:40

To je ono, díky 8-)

 
Nahoru Odpovědět
19.6.2015 21:40
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.