Ne yapmak istediğim: ButtonGroup içinde bulunan bir JRadioButton seçiliyse tetikleyen bir olay oluşturur ve sonra da metni JRadioButton üzerinde yazdırır. .ButtonGroup öğesinin "alt öğe" olarak değişmesi ve seçilen JRadioButton metninin yazdırılması
8
A
cevap
11
Benim yorumuma göre, bir ButtonGroup'a bir dinleyici ekleyemezsiniz. Bireysel JRadioButtons'a eklenen bir ActionListener ile gitmeniz gerekecektir.
Sorunuz yanıtlanmadıysa, lütfen sorununuz hakkında daha fazla bilgi verin.
düzenleme 1
Hep o ActionListeners kabul öyle ki buttonGroup uzatmak herhalde. izleyerek
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
import javax.swing.ButtonModel;
import javax.swing.event.EventListenerList;
@SuppressWarnings("serial")
public class MyButtonGroup extends ButtonGroup {
private ActionListener btnGrpListener = new BtnGrpListener();
private EventListenerList listenerList = new EventListenerList();
@Override
public void add(AbstractButton b) {
b.addActionListener(btnGrpListener);
super.add(b);
}
public void addActionListener(ActionListener listener) {
listenerList.add(ActionListener.class, listener);
}
public void removeActionListener(ActionListener listener) {
listenerList.remove(ActionListener.class, listener);
}
protected void fireActionListeners() {
Object[] listeners = listenerList.getListenerList();
String actionCommand = "";
ButtonModel model = getSelection();
if (model != null) {
actionCommand = model.getActionCommand();
}
ActionEvent ae = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, actionCommand);
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]== ActionListener.class) {
((ActionListener)listeners[i+1]).actionPerformed(ae);
}
}
}
private class BtnGrpListener implements ActionListener {
public void actionPerformed(ActionEvent ae) {
fireActionListeners();
}
}
}
Ve test: Örneğin:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class MyButtonGroupTest {
private static void createAndShowUI() {
String[] data = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
JPanel panel = new JPanel(new GridLayout(0, 1));
MyButtonGroup myBtnGrp = new MyButtonGroup();
myBtnGrp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Action Command is: " + e.getActionCommand());
}
});
for (String text : data) {
JRadioButton radioBtn = new JRadioButton(text);
radioBtn.setActionCommand(text);
myBtnGrp.add(radioBtn);
panel.add(radioBtn);
}
JFrame frame = new JFrame("MyButtonGroupTest");
frame.getContentPane().add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
Ama bu yine de sonuçta hem amaçlarına ulaşmak için her JRadioButton için ActionListers ekler; Bunu sadece MyButtonGroup'un ekleme yöntemi geçersiz kılmalarındaki sahnelerin arkasında yapar.
İlgili konular
- 1. JButton, JRadioButton öğesinin seçtiğini bilmiyor
- 2. mvc4'te seçilen öğe açılırken seçilen öğeyi nasıl değiştirebilirim?
- 3. Bir Xml düğümünün/öğesinin iç metninin değiştirilmesi
- 4. ComboBox'tan seçilen öğe her zaman aynıdır.
- 5. Seçilen öğe türünü al
- 6. Bir sözdizimi konumlandır: bir öğe öğesinin sağ tarafındaki öğe
- 7. Alt öğe üzerinde yeniden oluşturma işleminde alt öğe değişikliği gerçekleştirme
- 8. Yastıklı alt öğe üst öğesinin taşmasını nasıl önler?
- 9. ItemsControl'de seçilen öğe nasıl vurgulanır?
- 10. ListView öğesinin bir alt öğesinin üzerine tıklayın
- 11. getIntent() ve Intent öğesinin alt sınıfı
- 12. Seçilen Textview öğesinin rengi nasıl değiştirilir?
- 13. Öğe öğesinin başlangıç değerini seçin
- 14. Pymongo'daki çıktının güzel yazdırılması
- 15. Herhangi bir alt öğe
- 16. Android gridlayoutmanager ile recyclerview öğesinin son öğesinin alt boşluğunu ekle
- 17. ListView setOnItemClickListener ve setOnItemSelectedListener Seçilen Öğe Dizinini saklamak için set
- 18. Chosen.js - Seçilen öğe sayısını sınırlamak mümkün mü?
- 19. C# liste kutusu seti Seçilen öğe
- 20. Seçilen her öğe için jQuery birlikte çalışır
- 21. Neden varlığımın değişmesi var?
- 22. Belirli alt öğe içeren üst öğe bulun.
- 23. XML'den çoklu alt öğe öğelerini kaldırma
- 24. CSS: ana öğe öğesinin sınırlarının biraz dışında konumlandırılmış öğe
- 25. DDR Treeview Menüsü seçilen kök ve alt düğümünü görüntüler
- 26. Python'da bir PDF'nin sessiz yazdırılması
- 27. Dosyadan okuma değil Çıktının Yazdırılması
- 28. Çince metninin kesilmesi
- 29. Alt öğe üzerindeki metin süslemeyi geçersiz kılma
- 30. Unicode metninin Romingleştirilmesi
Lütfen Düzenleme 1'e bakın. –