Avatar
relycanx
Člen
Avatar
relycanx:11.5.2013 22:11

Chtěl bych se zeptat, jak by se prosím dala udělat reakce na klávesy a pokudmožno s podmínkou switch :)

 
Odpovědět 11.5.2013 22:11
Avatar
Samik11
Redaktor
Avatar
Samik11:11.5.2013 22:38

Na okno přidáš KeyListener a překryješ naimplementované metody. Informace o stisknuté klávese získáš přes instanci třídy KeyEvent. Kód by mohl vypadat takhle: :-)

@Override
public void keyPressed(KeyEvent e)
{
        int key = e.getKeyCode();

        switch(key)
        {
        case KeyEvent.VK_RIGHT:
                System.out.println("Vpravo"); break;
        case KeyEvent.VK_LEFT:
                System.out.println("Vlevo"); break;
        default:
                System.out.println("Neplatná volba");
        }

}
Nahoru Odpovědět 11.5.2013 22:38
„Radost vidět a rozumět, to je nejkrásnější dar přírody.“ Albert Einstein
Avatar
Samik11
Redaktor
Avatar
Nahoru Odpovědět 11.5.2013 22:43
„Radost vidět a rozumět, to je nejkrásnější dar přírody.“ Albert Einstein
Avatar
relycanx
Člen
Avatar
Odpovídá na Samik11
relycanx:11.5.2013 22:59

děkuji :)

 
Nahoru Odpovědět 11.5.2013 22:59
Avatar
relycanx
Člen
Avatar
Odpovídá na Samik11
relycanx:11.5.2013 23:05

jinak jak koukám, tak na to je metoda a co mám dopsat do toho parametru e? znám akorát scanner na čtení znaků a souborů a ten se na to nepoužívá ne? :( myslím tim, že když ji vyvolám, jakože "keyPressed(e)" tak co bude místo toho e

Editováno 11.5.2013 23:06
 
Nahoru Odpovědět 11.5.2013 23:05
Avatar
Samik11
Redaktor
Avatar
Odpovídá na relycanx
Samik11:11.5.2013 23:20

Vůbec ti nerozumím :D
KeyListener je rozhraní, nutí tě naimplementovat 3 abstraktní metody, které musíš překrýt:

  • keyPressed(KeyEvent e)
  • keyReleased(Ke­yEvent e)
  • keyTyped(KeyEvent e)

Parametr v závorce je instance třídy KeyEvent. Díky ní můžeš zjišťovat inforamce o stisknuté klávese. Např:

e.getKeyChar() // vrátí znak klávesy
Nahoru Odpovědět 11.5.2013 23:20
„Radost vidět a rozumět, to je nejkrásnější dar přírody.“ Albert Einstein
Avatar
relycanx
Člen
Avatar
Odpovídá na Samik11
relycanx:15.5.2013 19:12

já jsem chtěl lidsky jednoduchou věc. prostě jsem si to představoval tak, že jednoduše vyvolám metodu (třeba jako v C# Console.ReadKey()), kdy prostě počítač čeká na stisknutí určité klávesy a podle toho pak reaguje, ale bohužel ani nerozumím frázi "překrýt 3 abstraktní metody" :( abstraktní metody znám, ale vůbec nechápu co mám udělat. Můžeš mi prosím na příkladu ukázat, kdy se vyvoláním metody docílí naslouchání počítače, který čeká na stisknutí klávesy a následné podmínky, která se splní podle stiknutých kláves? Jako třeba scanner taky čeká, když zachytí metodu nextLine() a to je příkaz na jeden řádek :D

 
Nahoru Odpovědět 15.5.2013 19:12
Avatar
Hartrik
Redaktor
Avatar
Odpovídá na relycanx
Hartrik:15.5.2013 20:25

Zdejší zdrojové kódy by ti také mohly pomoci: http://www.itnetwork.cz/…had-snake-2d ;)

 
Nahoru Odpovědět 15.5.2013 20:25
Avatar
relycanx
Člen
Avatar
Odpovídá na Hartrik
relycanx:15.5.2013 20:48

no... já to chtěl zatim spíš narychlo pro přítelkyni, protože jsem čekal, že to bude jednodušší, ale když vidim ty mazce jak instance volá instanci zabalenou z instance a bla bla bla, tak se na to asi vykašlu, než k tomu v budoucnu dojdu sám. Zlatý scanner, kde stačí vytvořit instanci a pak jen volat metody, kde už počítač naslouchá :( :(

Editováno 15.5.2013 20:48
 
Nahoru Odpovědět 15.5.2013 20:48
Avatar
Odpovídá na relycanx
Michal Žůrek (misaz):15.5.2013 20:51

Ach jo, přečíst zdrojový kód a překopírovat ho a pochopit je (alespoň pro mě) otázka 10ti minut...

Nahoru Odpovědět 15.5.2013 20:51
Nesnáším {}, proto se jim vyhýbám.
Avatar
Зайчик
Člen
Avatar
Odpovídá na relycanx
Зайчик:15.5.2013 20:52

to budeš mít těžkej život programátora pokud ti přijde těžké přepsat 3 metody :)

Nahoru Odpovědět 15.5.2013 20:52
Коммунизм для нашего будущего!
Avatar
Nahoru Odpovědět 15.5.2013 20:53
Nesnáším {}, proto se jim vyhýbám.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
Зайчик:15.5.2013 20:56

pokud vím Scanner mu problém nedělá ;) dělá mu problém tohle :

neco.addKeyListener(new KeyListener(){

 @Override
 public void keyPressed(KeyEvent e){}
 @Override
 public void keyReleased(KeyEvent e){}
 @Override
 public void keyTyped(KeyEvent e){}
}
Editováno 15.5.2013 20:56
Nahoru Odpovědět 15.5.2013 20:56
Коммунизм для нашего будущего!
Avatar
Hartrik
Redaktor
Avatar
Hartrik:15.5.2013 21:01

Posluchače zaznamenávající změny na klávesnici se umísťují na komponenty, např JPanel, JTextArea...

panel.addKeyListener(new java.awt.event.KeyAdapter() {
    @Override
    public void keyPressed(java.awt.event.KeyEvent evt) {
        switch (evt.getKeyCode()) {
            case KeyEvent.VK_UP:
                break;
            case KeyEvent.VK_DOWN:
                break;
        }
    }
});
Editováno 15.5.2013 21:03
 
Nahoru Odpovědět 15.5.2013 21:01
Avatar
Hartrik
Redaktor
Avatar
Hartrik:15.5.2013 21:08

Změny ale nelze sledovat globálně - např ve Windows, v jiných oknech, nebo pokud není daná komponenta označena.

 
Nahoru Odpovědět 15.5.2013 21:08
Avatar
relycanx
Člen
Avatar
relycanx:15.5.2013 21:30

děkuji všem za odpovědi, vím že se vztekám, ale prostě na mě přítelkyně tlačí a mě trochu štve, že tomu moc nerozumim a vyčítá mi to, no :/ ale to je jedno :)

 
Nahoru Odpovědět 15.5.2013 21:30
Avatar
Зайчик
Člen
Avatar
Odpovídá na relycanx
Зайчик:15.5.2013 21:32

přítelkyně na tebe tlačí kvůli keyListeneru v jave? :D :D

Nahoru Odpovědět  +1 15.5.2013 21:32
Коммунизм для нашего будущего!
Avatar
Odpovídá na Зайчик
Michal Žůrek (misaz):16.5.2013 6:42

Spíš kvůli nějakému prográmku, který má umět keyListener :)

Nahoru Odpovědět 16.5.2013 6:42
Nesnáším {}, proto se jim vyhýbám.
Avatar
relycanx
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
relycanx:16.5.2013 13:59

jj právě no. Oni ve škole makaj v JavaFX a já s tím nemám zkušenosti, tak mi jednou řekla "ty furt něco programuješ, ale když po tobě jednou něco chci, tak mi nepomůžeš", takže mě to docela i rozhodilo, protože mě programování baví a rád bych jí pomohl, ale nejde to.. zatím :/ Jinak má za úkol udělat jednoduchou obrázkovou textovku, takže se má spustit program, objeví se úvodní obrazovka s obrázkem, kde je třeba "1)Start, 2)Konec" a hra zobrazuje další obrázky a zase se na ně reaguje podle číslic, prostě jako jednoduchá textovka pro konzoli, akorát místo konzole okno. Jako napadlo mě to udělat pomocí GUI, ale ona to musí mít v tom FXku. A to jí furt říkám ať mi splaší materiály, že pracovní listy ze školy jsou doslova požehnání, když je tam teorie a zároveň logický úlohy, ale stydí se no :/ jednou si tam zajdu asi sám :D :D

Editováno 16.5.2013 14:01
 
Nahoru Odpovědět 16.5.2013 13:59
Avatar
Kit
Redaktor
Avatar
Odpovídá na relycanx
Kit:16.5.2013 14:17

Jde o to, že jsi zvyklý zadat čtení ze vstupu a čekat. KeyListener tohle dělá za tebe. Objektu přidáš metodou addKeyListener objekt tvé třídy, která implementuje rozhraní KeyListener. Parametr "e" (osobně ho pojmenovávám "event", protože "e" si rezervuji pro exception) si událost (instanci třídy KeyEvent) dosadí už sama při volání některé z implementovaných metod.

Nahoru Odpovědět 16.5.2013 14:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na relycanx
Зайчик:16.5.2013 14:38

Jak přítelkyni máš asi pomoct když to sám neumíš? Radši jí řekni ať dává ve škole pozor. :P

Nahoru Odpovědět 16.5.2013 14:38
Коммунизм для нашего будущего!
Avatar
relycanx
Člen
Avatar
Odpovídá na Зайчик
relycanx:16.5.2013 17:08

já vím, ale jí nebaví procvičovat a nezvládá logické úlohy. Zároveň zastává názor, že programování je pro nejhloupější lidi, protože ti lidé co to programují, musí být na stejné úrovni jako počítač, který taky potřebuje na každou maličkost vysvětlení :D teď se snaží jen dodělat prvák tím, že udělá tuhle jednu pololetní práci (tu textovku) a pak přestoupí na jinou školu. Legrace je, že jsem přes tu JavuFX zvládnul daný obrázek vykreslit podle podmínky, jenže ono to vykreslení probíhá v několika krocích, kde si instance přihraje instanci a to hned několikrát, takže sice jdou obrázky vyvolávat v podmínce poměrně dobře, ale jakmile jsem to zkusil kutilsky přes scanner, kdy měl počítač hned po vykreslení obrázku čekat na zadání čísla, tak po spuštění programu se sice okno objevilo, bílé, jenže pak už nic, furt se mi tu točilo kolečko, že to maká, jenže ono to ve skutečnosti jen čekalo na stisknutí klávesy, což byla vyvolaná metoda potom -.- fakt škoda že se nedá kreslit do konzole, pak bych to FX někam zahodil :DDDD

 
Nahoru Odpovědět 16.5.2013 17:08
Avatar
Kit
Redaktor
Avatar
Odpovídá na relycanx
Kit:16.5.2013 17:22

Když je podle ní programování pro nejhloupější lidi, tak proč neprogramuje? Asi by z ní byla skvělá programátorka.

Nahoru Odpovědět  +1 16.5.2013 17:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:16.5.2013 17:30

spíš je sranda že vlastně chodí s hlupákem :)

Nahoru Odpovědět 16.5.2013 17:30
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:16.5.2013 17:34

Na druhou stranu mu řekla, že není až takový blbec, aby jí pomohl.

Nahoru Odpovědět  +1 16.5.2013 17:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:16.5.2013 17:36

ještě že nás hlupáku/imbecilů je stále málo a chytří lidé co jezdí s popelářem je až až tak aspoň my jakožto idioti tak moc nevyčníváme :) :D

Nahoru Odpovědět 16.5.2013 17:36
Коммунизм для нашего будущего!
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Зайчик
Jiří Gracík:16.5.2013 17:48

Když někomu lidi nerozumí a jejich práce se jim zdá nesmyslná nebo neužitečná, tak pak to jsou hlupáci, kreténi, a divný nebo zbytečný lidi, to se stává :D

Nahoru Odpovědět 16.5.2013 17:48
Creating websites is awesome till you see the result in another browser ...
Avatar
TomBen
Redaktor
Avatar
Odpovídá na relycanx
TomBen:16.5.2013 17:49

No to musí být pro ni docela ponižující, když nezvládne to, co nejhloupější
lidi bez problémů dovedou. :-) Asi bych ji v tom pěkně vymáchal. Nechal bych
ji snažit se samu a sem tam bych trefně okomentoval, co všechno má na tom
blbě. Při velkém úspěchu bych ji pochválil, že už se těm nejhloupějším
po malých krocích přibližuje. :D

Nahoru Odpovědět  +1 16.5.2013 17:49
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na TomBen
Jiří Gracík:16.5.2013 17:52

To je asi jako kdybys měl holku na technické škole a tvrdila, že třeba manuální práce je pro nejhloupější, řek jí ať složí skříňku, a poté, co by si vrtačkou provrtala nohu jí řek, že už se přibližuje těm nejhloupějším lidem :D Asi bys dostal po držce a byl svobodnej :D

Nahoru Odpovědět 16.5.2013 17:52
Creating websites is awesome till you see the result in another browser ...
Avatar
TomBen
Redaktor
Avatar
Odpovídá na Jiří Gracík
TomBen:16.5.2013 18:02

Prozradím ti tajemství..
Jsem dlouho a spokojeně ženatý. :D

Nahoru Odpovědět 16.5.2013 18:02
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Jiří Gracík
Redaktor
Avatar
Nahoru Odpovědět 16.5.2013 18:10
Creating websites is awesome till you see the result in another browser ...
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 31 zpráv z 31.