PDA

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.

PGI-Bis
23-09-2007, 16:36
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?