|
|
|
|
Strumenti |
17-07-2008, 14:37 | #1 |
Senior Member
Iscritto dal: Aug 2006
Città: Padova
Messaggi: 5643
|
[JAVA-Swing]Non trovo una funzione per un JButton..
Ciao ragazzi!!
Praticamente io ho una finestra con un unico JButton e vorrei che, quando la finestra è selezionata, se premo INVIO quel JButton venga premuto. Ho provato a dare un'occhiata alle API ma non sono riuscito a trovare niente: il metodo che più si avvicina è "void setMnemonic (KeyEvent)" che funziona come dico io solo che devo premere ALT+INVIO e non solamente INVIO come vorrei io!! ...qualcuno conosce un metodo per fare come voglio io?? grazie mille a tutti quelli che troveranno il tempo per aiutarmi!!
__________________
DESKTOP: Corsair Obsidian 550D || Corsair HX520W || Intel i5 3570k || Noctua NH-U9B SE2 || Gigabyte Z77-D3H || 2x4GB DDR3 Corsair 1600MHz || Sapphire R9 270X Dual-X || Crucial M4 128GB, WD Blue 1TB || Liteon 16x || LG IPS236V FullHD || Logitech X540 NAS: QNap TS219P || APC BE550G-IT DIABLO 3: Zhoth#2214 |
17-07-2008, 14:58 | #2 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
devi implementare l'interfaccia java.awt.event.KeyListener e poi:
Codice:
... tuoPulsante.addKeyListener(this); .... public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { // fai quello che devi }
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
17-07-2008, 15:01 | #3 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Scusami Oceans11, ma il sitema che hai suggerito dovrebbe funzionare solo se il JButton ha il focus nel momento in cui premi "Invio", giusto?
__________________
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) |
17-07-2008, 15:05 | #4 | |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
Se invece c'è qualche altro componente, tipo un'area di testo dove scrivere e poi premere invio, allora il pulsante neanche serve, basta far implementare KeyListener dall'area di testo stessa. Giusto?
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
17-07-2008, 15:06 | #5 | |
Senior Member
Iscritto dal: Aug 2006
Città: Padova
Messaggi: 5643
|
Quote:
..intanto grazie della risposta!!
__________________
DESKTOP: Corsair Obsidian 550D || Corsair HX520W || Intel i5 3570k || Noctua NH-U9B SE2 || Gigabyte Z77-D3H || 2x4GB DDR3 Corsair 1600MHz || Sapphire R9 270X Dual-X || Crucial M4 128GB, WD Blue 1TB || Liteon 16x || LG IPS236V FullHD || Logitech X540 NAS: QNap TS219P || APC BE550G-IT DIABLO 3: Zhoth#2214 |
|
17-07-2008, 15:08 | #6 | |
Senior Member
Iscritto dal: Aug 2006
Città: Padova
Messaggi: 5643
|
Quote:
__________________
DESKTOP: Corsair Obsidian 550D || Corsair HX520W || Intel i5 3570k || Noctua NH-U9B SE2 || Gigabyte Z77-D3H || 2x4GB DDR3 Corsair 1600MHz || Sapphire R9 270X Dual-X || Crucial M4 128GB, WD Blue 1TB || Liteon 16x || LG IPS236V FullHD || Logitech X540 NAS: QNap TS219P || APC BE550G-IT DIABLO 3: Zhoth#2214 |
|
17-07-2008, 15:16 | #7 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
allora ho indovinato.... che
Codice:
// classe che implementa KeyListener JTextField textField = new JTextField(15); textField.addKeyListener(this); /* * KEY LISTENER per il text field */ public void keyPressed(KeyEvent e) { if (textField.getText().length() > 0) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { // metti qui quello che ti serve } } }
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
17-07-2008, 15:17 | #8 |
Senior Member
Iscritto dal: Aug 2006
Città: Padova
Messaggi: 5643
|
GRAZIEEE!! ho risolto aggiungendo un ActionListener al JTextField e invocando il doClick() sul JButton in questione!!
__________________
DESKTOP: Corsair Obsidian 550D || Corsair HX520W || Intel i5 3570k || Noctua NH-U9B SE2 || Gigabyte Z77-D3H || 2x4GB DDR3 Corsair 1600MHz || Sapphire R9 270X Dual-X || Crucial M4 128GB, WD Blue 1TB || Liteon 16x || LG IPS236V FullHD || Logitech X540 NAS: QNap TS219P || APC BE550G-IT DIABLO 3: Zhoth#2214 |
17-07-2008, 16:01 | #9 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Un'altra soluzione che ho trovato e sperimentato (con risultati positivi) è quella di intercettare direttamente gli eventi generati dalla tastiera e diretti al KeyboardFocusManager prima che lui li smisti al componente "in focus" (per esempio appunto per settare a livello "globale" di un JFrame che può avere molti sottocomponenti un evento da tastiera non localizzato su un particolare componente) Vedi il link
__________________
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) |
|
17-07-2008, 16:08 | #10 | |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
17-07-2008, 16:16 | #11 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Cmq a buon rendere
__________________
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) |
|
17-07-2008, 16:16 | #12 | |
Senior Member
Iscritto dal: Aug 2006
Città: Padova
Messaggi: 5643
|
Quote:
..per ora come immagino avrete capito sono ancora all'inizio!!
__________________
DESKTOP: Corsair Obsidian 550D || Corsair HX520W || Intel i5 3570k || Noctua NH-U9B SE2 || Gigabyte Z77-D3H || 2x4GB DDR3 Corsair 1600MHz || Sapphire R9 270X Dual-X || Crucial M4 128GB, WD Blue 1TB || Liteon 16x || LG IPS236V FullHD || Logitech X540 NAS: QNap TS219P || APC BE550G-IT DIABLO 3: Zhoth#2214 |
|
17-07-2008, 19:45 | #13 |
Senior Member
Iscritto dal: Jan 2007
Città: Messina
Messaggi: 502
|
Per non impazzire fra focus e listener puoi pure fare
Codice:
laTuaFinestra.getRootPane().setDefaultButton(ilTuoPulsante); |
18-07-2008, 08:19 | #14 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ottimo! Non conoscevo setDefaultButton(...), grazie
__________________
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) |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:30.