|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2009
Messaggi: 59
|
[Java] Gestire gli eventi dei bottoni tramite tastiera
Ciao raga! Vorrei sapere se esistono ascoltatori particolari o metodi per i bottoni per gestirli tramite tastiera... ad esempio, per premere il bottone non soltanto con il click sinistro del mouse, ma con un determinato tasto della tastiera!
Ho trovato questo, non so se può essere utile, ma non ho capito bene come usarlo :S Key Bindings Grazie! |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Dec 2009
Messaggi: 59
|
Comunque, in parte ci sono riuscito, ma per esempio non riesco a far interagire le freccette direzionali, con quel rettangolino tratteggiato di selezione che spunta quando clicchi o dai invio a qualcosa... qualcuno mi può aiutare?????? Non credo sche nessuno ne sappia qualcosa
![]() |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
In particolare, se vuoi che un bottone scateni il suo evento di azione (ActionEvent) non solo quando viene cliccato con il mouse ma anche in risposta alla pressione di un tasto specifico della tastiera, allora esiste il meccanismo dei cosidetti "Mnemonics". Ad esempio: Codice:
Button b = new JButton("Fai qualcosa"); b1.setMnemonic(KeyEvent.VK_F); Per leggere dei Mnemonics puoi leggere: - How to Use Buttons, Check Boxes, and Radio Buttons Per leggere degli Accelerators (un'altro meccanismo simile ma dedicato ai menu') puoi leggere: -How to use menu I Mnemonics e gli Accelerators usano il meccanismo dei KeyBindings dietro le quinte: ma entrambi questi meccanismi offrono un'astrazione che rende più comodo il loro utilizzo per il programmatore, negli scenari per cui sono stati pensati (mnemonici per bottoni e per menu, accelerators come rapidi shortcuts a menu item specifici).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#4 | |
Member
Iscritto dal: Dec 2009
Messaggi: 59
|
Quote:
![]() invece per quel fatto delle freccette direzionali, per far spostare il cursore tratteggiato (come questo in figura nel middle button) in modo da scorrere le componenti anche tramite tastiera? ![]() |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Comunque, di default (ed è un meccanismo standard nelle UI) l'utente può dare il focus-utente al componente grafico successivo o al precedente rispetto a quello attuale che lo possiede, mediante TAB e SHIFT+TAB (sotto Windows, non so se sia platform-specific), questo binding esiste già. Non credo esista invece una nozione condivisa e ben definita di componente a sinistra, a destra, sopra e sotto ai fini della gestione del focus-utente che tu hai ipotizzato. In questo caso spetta a te tenere traccia in qualche modo delle posizioni relative tra i componenti, mappare ognuno dei tasti freccia con un nome-azione specifico (ad ese.: il tasto "freccia su" con il nome "componente superiore", il tasto "freccia destra" con il nome "componente a destra", ecc...) nella InputMap del componente e poi mappare ogni nome-azione specifico con un'azione (Action) vera e propria nella ActionMap del componente, come spiegato nel link KeyBindings che hai postato. Ovviamente anche le singole implementazioni delle varie Action sono a tuo carico; ciò che devono fare sostanzialmente è: 1- trovare il nuovo componente a cui dare il focus; 2- chiedere al sistema che venga dato il focus-utente a quel componente. Come puoi intuire, si tratta di un discreto (punto 1) lavoro: si fa solo se il gioco vale la candela.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 11-07-2012 alle 12:29. |
|
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Dec 2009
Messaggi: 59
|
Mh, capisco... va be, penso che l'utente possa arrangiarsi con il mouse allora! XD grazie mille comunque!
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:52.