Diskuze: Java zachytávání klávesnice - mezerník
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Stačí přidat EventHandler a nastavit na co má reagovat. Názvy caseů odpovídají názvu tlačítek.
scene.addEventHandler(KeyEvent.KEY_PRESSED, (KeyEvent e) -> {
switch(e.getCode()){
case SPACE:
doSomething();
break;
case S:
doSomething();
break;
case UP:
doSomething();
break;
case F8:
doSomething();
default:
break;
}
});
Standardní chování komponent které mají focus je, že reagují na mezerník spuštěním ActionPerformed.
Z tvého popisu nechápu úplně přesně co má reagovat na ten mezerník. Chceš mít okno které bude reagovat na stisk mezerníku ať už je focus na jakémkoliv tlačítku? Nebo chceš mít naopak focus na určitém tlačítku tak, abys ho mohl aktivovat mezerníkem?
V okně mám tlačítko "Start", tak chci aby se mezerníkem stisklo toto tlačítko.
Nějak nechápu co je "scene" a šipka "->" za parametrem metody.
Ad scene - kolega asi předpokládal, že to děláš v JavaFX. 'Šipka' je novinka Javy 8 využívá se v lambda výrazech, více na https://docs.oracle.com/…essions.html
Potom ti stačí si u toho tlačítka vyžádat focus a máš hotovo, ne?
tlacictkoStart.requestFocus()
Nějak nechápu. Kam tuto metodu umístím a jak zvolím mezerník?
Nemohl bys prosím tě kus kódu?
O ten focus požádej tehdy když chceš aby to tlačitko ten focus mělo Já neznám detaily té tvé aplikace, tak těžko radit konkrétně kam to dát. Mimochodem, právě jsem se dočetl, že je lepší používat na tohle metodu requestFocusInWindow(), protože requestFocus() je údajně závislý na platformě a někde by nemusel fungovat.
Ale přepokládejme modelovou akci, že si v netbeans uděláš nový projekt, dáš vytvořit nový JFrame Form a pak si na ten JForm v designeru nasázíš pár tlačítek a labelů atd. Standardní chování je, že když to pustíš tak focus je na prvním vloženém tlačítku. Ale řekněme že chceš, aby ten focus byl po spuštění na třetím tlačítku, které se jmenuje jButton3. Tak prostě v konstruktoru toho formu přímo za initComponents() dáš
jButton3.requestFocusInWindow();
a máš focus po otevření toho formu na třetím tlačítku.
Mezerník nemusíš nijak vybírat, jak jsem psal výše, je standardní chování, že pokud je focus na tlačítku tak ho mezerníkem aktivuješ.
Už to chápu, děkuji za vysvětlení.
Zpočátku jsem nedokázal pochopit princip focusu tak jsem ani předtím po napsání do kódu (jak jsi i teď napsal) nenapadlo po spuštění ten mezerník zkusit zmáčknout.
Zobrazeno 10 zpráv z 10.