2010-12-17 17 views
6

JButtonlar, JButton'a tıklamakla aynı olan boşluk çubuğuna basmayı düşünür (JButton'un burada olduğunu varsaydığım odağı varsayarak). Bu davranışı kapatmak için boşluk çubuğuna basmayı ihmal etmenin bir yolu var mı?Boşluk çubuğunu devre dışı bırakma tetikleme için tıklayın JButton

Ayrıca, daha genel olarak, AbstractButtons ile bunu yapmak için bir teknik var mı?

+0

Sorunun düğmelerle ilgili olduğunu sanmıştım. Bazı düğmeler boşluk çubuğu ile çalışmak için değil, çok iyi bir UI değil. O zaman neden düğmeyi birer birer değiştirmek istersin? – camickr

cevap

1

Sen

jbutton.getInputMap().put(KeyStroke.getKeyStroke("SPACE"), "none"); 

yaparak devre dışı bırakabilirsiniz Bu JRadioButton s gibi, aynı zamanda diğer AbstractButton s için çalışıyor gibi görünüyor. @camickr olarak

aşağıdaki gibi tek seferde tüm JButton s için bunu çözebilir below dikkat çekiyor:

InputMap im = (InputMap)UIManager.get("Button.focusInputMap"); 
im.put(KeyStroke.getKeyStroke("pressed SPACE"), "none"); 
im.put(KeyStroke.getKeyStroke("released SPACE"), "none"); 
+0

Bana bildirdiğiniz için teşekkür ederiz. Cevap güncellendi. – aioobe

3

aioobe tarafından verilen bağlantı bireysel düğme için nasıl yapılacağını gösterir. Tüm JButton en için yapmasını istiyorsanız yapardın:

InputMap im = (InputMap)UIManager.get("Button.focusInputMap"); 
im.put(KeyStroke.getKeyStroke("pressed SPACE"), "none"); 
im.put(KeyStroke.getKeyStroke("released SPACE"), "none"); 

Eğer her farklı giriş harita için yukarıdaki tekrarlamak gerekir onay kutuları ve radyo düğmeleri için bunu yapmak istiyorum.

Enter Key and Button'u okumak isteyebilirsiniz. Aslında ne istediğinizin tam tersini yapar, çünkü Enter tuşu kullanıldığında düğmeyi nasıl çağırılacağını açıklar. Fakat bu çözümün neden ters olarak çalıştığını açıklamaya yardımcı olabilir.

İlgili konular