View Full Version : [Java] Scorciatoie da tastiera
carter100
23-09-2007, 14:25
Ciao a tutti,
per esercitarmi sto sviluppando in java una specie di notepad di windows; volevo aggiungere però delle scorciatoie da tastiera (per intenderci, qualcosa del tipo che dopo aver selezionato una parola, se premo ctrl+c questa viene copiata e con ctrl+v viene incollata senza premere i pulsanti relativi).
Ho cercato su google ma non ho trovato nulla.
E' possibile fare una cosa simile in java?
Grazie
nuovoUtente86
23-09-2007, 15:03
devi gestire gli ascoltatori degli eventi collegati alla tastiera.Se riesci a procurarti il libro CoraJava2 7°edizione..c' è un capitolo dedicato molto valido.
Ogni JComponent ha due mappe, una delle "azioni" e una degli "input". La mappa degli input accetta la registrazione di oggetti KeyStroke. Un KeyStroke è una combinazione di tasti. Brevemente, supponendo di voler associare la combinazione di tasti "ctrl-h" all'invocazione di un metodo "salva", diremmo:
Action azione= new AbstractAction() {
public void actionPerformed(ActionEvent e) { salva(); }
};
KeyStroke combinazioneTasti = KeyStroke.getKeyStroke("control H");
ActionMap actionMap = comp.getActionMap();
actionMap.put("nome", azione);
InputMap inputMap = comp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(combinazioneTasti, "nome");
L'associazione tra la combinazione di tasti e l'azione avviene per condivisione della chiave "nome" tra la mappa di input e la mappa delle azioni.
Per i pulsanti dei menu puoi usare direttamente il metodo "setAccelerator".
carter100
23-09-2007, 16:36
Ok grazie, cercherò di prenderlo al più presto.
Buona giornata
carter100
23-09-2007, 16:38
Ogni JComponent ha due mappe, una delle "azioni" e una degli "input". La mappa degli input accetta la registrazione di oggetti KeyStroke. Un KeyStroke è una combinazione di tasti. Brevemente, supponendo di voler associare la combinazione di tasti "ctrl-h" all'invocazione di un metodo "salva", diremmo:
Action azione= new AbstractAction() {
public void actionPerformed(ActionEvent e) { salva(); }
};
KeyStroke combinazioneTasti = KeyStroke.getKeyStroke("control H");
ActionMap actionMap = comp.getActionMap();
actionMap.put("nome", azione);
InputMap inputMap = comp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(combinazioneTasti, "nome");
L'associazione tra la combinazione di tasti e l'azione avviene per condivisione della chiave "nome" tra la mappa di input e la mappa delle azioni.
Per i pulsanti dei menu puoi usare direttamente il metodo "setAccelerator".
Bè, che posso dirti, ti ringrazio tantissimo pgi-bis, provo in questi giorni, se ho problemi al massimo torno a chiedere.
Ancora grazie e buona domenica
Edit: una sola domanda: per comp intendi l'istanza di un JComponent?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.