JRadioButton bzw. Group -> Name des selektierten Button

JavaMaddin

Mitglied
Wie bekomme ich den Namen (also den Text ) von einem JRadioButton?

Habe nen ActionListener angebunden und einer inneren Klasse mache ich folgendes:

Code:
class ActionAdapter_PanelUnten implements ActionListener {
		
		Hauptfenster hauptFenster = null;
		
		public ActionAdapter_PanelUnten(Hauptfenster hauptfenster) {
			super();
			this.hauptFenster = hauptfenster;
		}
		
		public void actionPerformed(ActionEvent event) {
			
			if ( event.getSource() ==  buttonParteiNeu) {
				System.out.println("Partei hinzugefügt");
			} else if (event.getSource() == buttonParteiLoeschen) {
				System.out.println("Partei gelöscht");
			} else if (event.getSource() == buttonBerechnen) {
				System.out.println("Berechnen");
				berechnen();
			} else if (event.getSource() == radiobuttonDhondt || event.getSource() == radiobuttonNiemeier) {
//				System.out.println("Gewähltes Verfahren: " + gruppeVerfahren..getSelection());
				berechnen();
			}
			
		} // Ende der Aktion
		
	} // Ende Klasse ActionAdapter_PanelUnten

bei gewähltes Verfahren gibt er mir mit getSelection nicht den Text sondern den ButtonName also "javax.swing.JToggleButton$ToggleButtonModel@198dfaf" aus.

Wie bekomme ich den Text?
Habs auch schon mit den ChangeListener probiert.
 
ich hoffe ich hab dich richtig verstanden!!
Also es gibt zwei Möglichkeiten:
Entweder du erstellst die Klasse actionPerformed direkt beim einbinden des ActionListeners, also:
Code:
		buttonParteiNeu.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				System.out.println("Partei hinzugefügt");
			}
			
		});

oder, so wie es bei dir auch im mom ist müsste es lauten:

buttonParteiNeu.addActionListener(this)

Ich hoffe das wars was du meintest!
 
Also dass was du schreibst hab ich ja alles schon, halt nur in einer inneren Klasse.

Das Problem ist dass ich zwar im Konstruktor getText() habe aber nicht mehr in der actionperformed...

Ich versteh nur leider nicht warum?
Und die Methode getSelected() gibt ja auch den gewählten Button aus jedoch nicht den Text sondern nur den internen Namen.
 
So ganz weiß ich nicht was du meinst, aber ich kann mir vorstellen dass deine actionPerformed() nicht in der selbe Klasse des RadioButtons ist, was aber der Fall sein sollte!

Ich schick mal ein kleines Beispiel mit und hoffe dass es dir weiterhelfen wird!

Java:
public class RadioButton extends JFrame {

	public JRadioButton buttonParteiNeu;
	
	public RadioButton(){
		super("RadioButton");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLayout(null);
		setSize(200,100);
		setLocationRelativeTo(getOwner());
		
		buttonParteiNeu = new JRadioButton("Neue Partei (false)",false);
		buttonParteiNeu.setBounds(20, 20, 180, 25);
		buttonParteiNeu.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				buttonParteiNeu.setText("Neue Partei ("+buttonParteiNeu.isSelected()+")");
				System.out.println(buttonParteiNeu.getText());
				System.out.println(buttonParteiNeu.isSelected());
			}
			
		});
		add(buttonParteiNeu);

	}
	
	public static void main(String[] args) {
		new RadioButton().setVisible(true);

	}

}
 
Zuletzt bearbeitet:
Ok, mag sein dass es so funktioniert, aber ich muss die actionPerformed() Methode entweder in eine innere Klasse oder in einen extra Packet auslagern.

Ich verstehe nicht warum die Methoden nicht verfügbar sind.
Ich mach das bis jetzt mit allen Komponenten so ohne Probleme?!

EDIT:
Also isSelected() funktioniert. Und der Button selber auch.
Ich vermute es liegt daran, dass an der ButtonGroup kein Listener ist!
Wo muss ich nun überall welchen Listener anbinden?
Nur an die Group oder beide?
 
Zuletzt bearbeitet:
Zurück