Benim salıncak programımda bir JTextField ve bir JButton var. Kullanıcı "enter" tuşuna bastığında, JButton'un actionListener'ı çalıştırdığında, bunu yapmak isterim. Bunu nasıl yapardım? Şimdiden teşekkürler.Tıklama tuşu ile "enter" tuşuna nasıl basılır?
cevap
JRootPane, istediğiniz şeyi yapacak bir yöntem setDefaultButton (JButton düğmesi) içerir. Uygulamanız bir JFrame ise, RootPaneContainer arabirimini uygular ve JFrame'de getRootPane() öğesini çağırarak kök bölmeyi alabilir ve ardından döndürülen kök bölmesinde setDefaultButton öğesini çağırabilirsiniz. Aynı teknik JApplet, JDialog veya RootPaneContainer'ı uygulayan başka bir sınıf için de çalışır. Burada
http://www.java2s.com/Code/Java/Swing-JFC/SwingDefaultButton.htm
bu bir örnek vardır
Bu yalnızca .getRootPane() öğesini planladığınız bileşeni başlattıktan sonra çalışır mı? Eğer öyleyse, bu onu doğrudan bu bileşenin yapıcısına yapamam, yani? –
@LucasMorgan: Bunun çalışması için bir JRootPane'e ihtiyacınız var ve bu mantıklı. Aksi halde anahtar bağlamaları kullanmanız gerekebilir. –
ne ihtiyaç vardır: rootPane.setDefaultButton (button2);
ActionListeners'tan kurtulun. Dinleyiciler için eski tarz bu. Eylem sınıfına mezunu. Hile, InputMaps ve ActionMaps çalışmalarını anlamaktır. Bu gerçekten çok güzel Swing benzersiz bir özelliktir: WHEN_ANCESTOR_OF_FOCUSED_COMPONENT kullanma
JPanel panel = new JPanel();
panel.setLayout(new TableLayout(...));
Action someAction = new AbstractAction("GO") {
public void actionPerformed() {
}
};
InputMap input = panel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
input.put(KeyStroke.getKeyStroke("enter", "submit");
panel.getActionMap().put("submit", someAction);
panel.add(button = new JButton(someAction));
panel.add(textField = new JTextField());
çocuğu bunun herhangi birinden klavye olaylarını alacak şekilde panelini sağlar:
http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html İşte
var bunu nasıl (yani atalar). Dolayısıyla, panelin içinde bulunduğu sürece hangi bileşenin odaklandığı önemli değildir, bu durumda tuş vuruşu, ActionMap'ta "gönder" altında kayıtlı herhangi bir eylemi başlatır.
Bu, menüleri, düğmeleri veya tuş vuruşlarını kullanarak eylemleri yeniden paylaşarak yeniden kullanmanızı sağlar.
Anahtar Bağlama pek çok durumda yararlıdır, ancak sunulan diğer basit çözümleri kullanabildiğinizde (arka planda önemli ölçüde bağlayıcı olan) büyük olasılıkla mevcut sorun için fazla bir şey değildir. –
Yazarın kendi başına bir iletişim kutusunun veya ana kullanıcı arabiriminin olup olmadığını belirtmediğine bağlı. SetDefaultButton() kullanımı, bir iletişim kutusundaki tek şey olduğunu varsayar. Eylemler'i ve Swing araç setinin geri kalanıyla nasıl ilişkili olduklarını belirtmemek, menü bağlamaları, genel tuş vuruşları gibi diğer konulara daha fazla götürür ve varsayılan bileşenler için anahtar eşlemelerini özelleştirir. Ayrıca, ActionListen kullanan herkesin farkında olması gerekir. Her durumda işlemler üstündür. – chubbsondubs
"ActionListeners kullanan herkesin farkında olması gerekir. Eylemler her durumda üstündür." - Hmm, ve tüm genellemelerin yanlış olduğunu öğrettim. :) –
- 1. "Enter" tuşuna, sadece MouseClick
- 2. Metin kutusuna 'enter' tuşuna basın
- 3. Bir textarea'da "Enter" tuşu nasıl oluşturulur
- 4. Vaad'de enter tuşuna basılması nasıl algılanır TextArea
- 5. e.which ENTER tuşu yalnızca giriş alanı odağı
- 6. Akışa "enter tuşuna bas" nasıl yazılır?
- 7. Kullancım numpad Enter tuşuna bastığında tek bir Tuşu anahtarı nasıl gönderebilirim?
- 8. XAML'de "ENTER" Tuşuna Basıldığında Komutu Çağır
- 9. jqGrid DatePicker isabetsiz süzme Enter tuşu
- 10. Bir pencerede enter tuşuna basarak girin
- 11. Excel, Enter tuşuna basmadan değeri güncelleştirmiyor
- 12. Bir JDialog düğmesi oluşturma Enter tuşuna
- 13. Enter tuşuna bir TextBox'ta ne zaman basıldığını nasıl anlarım?
- 14. Klavye Enter tuşu MFC İletişim Kutusunda çalışmıyor mu?
- 15. StyledText'te Enter tuşuna bastıktan sonra yeni satır nasıl engellenir?
- 16. SuggestBox Enter tuşu üzerindeki tüm seçenekleri gösteren GWT
- 17. semantic-ui 'enter' tuşuna bastığınızda aşağıdaki bağlantıyı arayınız
- 18. Python'da son tuşa nasıl basılır?
- 19. Enter tuşuna bastıktan sonra metin kutusuna odaklanmaya devam edin
- 20. Enter tuşuna basılması, beklenen arama düğmesine p: defaultCommand
- 21. Sadece _some alanlarındaki Enter tuşu ile form gönderimini devre dışı bırakma
- 22. onEditorAction(), Enter tuşuna basıldıktan sonra, Jelly Bean emülatörü
- 23. Metin kutusunun netleme özelliği varsa enter tuşuna basıldığında fonksiyonun çalıştırılması
- 24. "Done" tuşu ile UITextView * ve * "Return" tuşu?
- 25. xmonad ve Emacs: 'mod' tuşu ile sorun
- 26. Enter tuşunu aspx sayfasında bir düğme ile nasıl ilişkilendiririm?
- 27. C# ile basılmakta olan tuşu değiştirin. #
- 28. Boşluklu bir tamsayıya nasıl basılır?
- 29. RichTextBox ve sekme tuşu
- 30. nodejs selenium webdriverio webdriver.key (ENTER)
getRootPane() setDefaultButton (JButton defaultButton); – ashubuntu