JRadioButton auslesen?

Status
Nicht offen für weitere Antworten.

mobile

Bekanntes Mitglied
Hi, Leute bin etwas kaputt hab grad 6 std Abi Klausur geschrieben, aber jetzt gehts weiter!

Hab nen kleines Problemchen. Den Sinn und Weg zur Lösung hab ich schon im Kopf ich weiß nur noch nicht, wie ich das realisieren soll. Folgendes:

In einer JMenüBar sind im Menü arten sind verscheidene JRadioButtons deklariert.

Code:
JMenu arten = new JMenu("Rechenarten");
		JRadioButton plus = new JRadioButton("Addition");
		JRadioButton minus = new JRadioButton("Subtraktion");
		JRadioButton mal = new JRadioButton("Multiplikation");
		JRadioButton geteilt = new JRadioButton("Division");

So nun möchte ich einen dieser Punkte auswählen per klick, geht ja ganz normal (anklicken). Nun muss ich aber auslesen welcher Punkt markiert ist. Den markierten Punkt soll dann an ein KeyListener übergeben werden der beim anklicken eine Funktion aufruft. Diese Funktion soll sich aber nach der Markierung der JRadioButtons richten. True oder false geht ja dann nicht oder? Sind ja 4 verschieden RadioButtons.

Hier mal die class mit den Methode, nee die braucht ihr eigentlich nicht oder? Wie ich die aufrufe weiß ich ja.

dann den KeyListener

Code:
//Behandlung für die Steuer Elemente
	final class Button implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			Rechner add = new Rechner();
			add.add();
		}
	}
Im Moment rufe ich class Rechner mit der Methode add() (addieren) auf. Gibt noch Subtrahieren,Multiplizieren und Dividieren.

So, wie kann ich jetzt den ausgewählten JRadioButton auslesen? Dazu muss ich ihm ja irgendwie noch einen Wert geben. Dieser Wert soll dann an den KeyListener übergeben werden. Und da sage ich dann mit if() oder switch() was er für welche Bedingung tun soll. Also angenommen RadioButton plus hat den Wert 1, dann sage ich im KeyListener z.B:,
Code:
int i;
switch(i) {
case 1 : Rechner add = new Rechner();
		 add.add();
break;
case 2: Rechner sub = new Rechner();
		sub.sub();
break;
}
usw. Verständlich was ich meine? Hoffe ohr könnt mir helfen!

Danke!
 

The_S

Top Contributor
timkon hat gesagt.:
usw. Verständlich was ich meine?

Öhm ... nein!

Was willst du genau machen und mit was hast du zZ. Probleme. Beschränke dich auf das wesentliche und verschweige triviale Informationen, damit man den Überblick behalten kann.

Hast du Probleme festzustellen welcher Button markiert ist?
 

flo_richi

Mitglied
Also wenn ich das richtig verstanden habe:

die Buttons solltest du einer RadioGroup hinzufügen, da wahrscheinlich immer nur einer ausgewählt wird:

Code:
ButtonGroup g = new ButtonGroup();
JRadioButton jrb1 = new JRadioButton();
JRadioButton jrb2 = new JRadioButton();

g.add(jrb1);
g.add(jrb2);

//dann jeden Button zu !ItemListener! hinzu

jrb1.addItemListener(new ItemListener()  {
      public void itemStateChanged (ItemEvent evt) {
        jrb1ItemStateChanged (evt);}});

jrb2.addItemListener(new ItemListener()  {
      public void itemStateChanged (ItemEvent evt) {
        jrb2ItemStateChanged (evt);}});

Meines Wissens nach muss man jeden einzelnen RadioButton einem Listener hinzufügen, da das mit einer RadioGroup nicht geht?!

Der ItemListener wird bei einer Änderung aufgerufen:

Code:
public void jrb1ItemStateChanged (ItemEvent evt)
    { 
      if(jrb1.isSelected() == true)
       rechner.addieren();
    }

public void jrb2ItemStateChanged (ItemEvent evt)
   {  
     if(jrb1.isSelected() == true)
      rechner.multiplizieren();
   }
 

mobile

Bekanntes Mitglied
Also die JRadioBUttons sind jetzt in einer Gruppe zusammen gefasst.
Wenn ich das richtig verstehe, wird dann bei jeder änderung der RadioButtons eine definierte Methode ausgefürt.

Ich möchte, aber erstmal nur auslesen, welcher Button markiert ist.
Für den markierten ist dann eine Methode vorgesehen.
Diese Methode wird dann durch klicken eines JButtons ausgeführt.

Wenn ich den RadioButton jetzt änder, dann soll bei klicken auf JButton eine andere Methode ausgeführt werden.

Vielleicht ist es so klarer! Hoffe mal :)

Danke, für die Tipps und für weitere!
 

flo_richi

Mitglied
Definier einfach ne globale Var und ändere die Listener wie folgt:

Code:
public void jrb1ItemStateChanged (ItemEvent evt)
    {
      if(jrb1.isSelected() == true)
       globale_variable = 1;
    }

dann bei klick auf Button:

Code:
switch(globale_variable)
{
  case 1: addiere; break;
  case 2: multip; break;
  //usw.....
  default: break;
}
 

mobile

Bekanntes Mitglied
Also ich habe jetzt den Listener mit der lokalen Variable
Code:
//Behandlung für die Menü Liste
	int globale_variable;
	final class Liste implements ItemListener {
		public void itemStateChanged (ItemEvent evt) {
			if(plus.isSelected() == true) {
				globale_variable = 1;
			} 
		}		
	}
Das Plus unterstreicht er und sagt das plus nicht gefuden/aufgelöst werden kann

Die RAdioButtons werden hier für den Listener registriert (erstma nur einer zum Test)
Code:
//RadioButtons für Listener registrieren
		plus.addItemListener(new ItemListener()  {
		      public void itemStateChanged (ItemEvent evt) {
		        plusItemStateChanged (evt);
		      }
		 }); 
	}
Hier streicht er mit das plusItemStateChanged an, wenn ich nur itemStateChanged(evt) schreibe geh es.

Hier wird es dann im Listener des JButtons aufgerufen
Code:
//Behandlung für die Steuer Elemente
	final class Button implements ActionListener {
		public void actionPerformed(ActionEvent e) {
				switch(globale_variable) {
				case 1 : Rechner add = new Rechner();
						 add.add();
				break;
				case 2 : Rechner sub = new Rechner();
				 		 sub.sub();
				break;
				case 3 : Rechner mul = new Rechner();
				 		 mul.mul();
				break;
				case 4 : Rechner div = new Rechner();
				 		 div.div();
				break;
				default: 
				break;
				} 
		}
	}

Was mache ich noch falsch? Irgendwie geht das noch nicht so ganz!

Hoffe ihr könnt mir weiter helfen
 

mobile

Bekanntes Mitglied
Jetzt habe ich den Fehler
Code:
//Behandlung für die Menü Liste
   int globale_variable;
   final class Liste implements ItemListener {
      public void itemStateChanged (ItemEvent evt) {
         if(plus.isSelected() == true) {
            globale_variable = 1;
         }
      }      
   }
Hier behoben, indem ich plus zu einer Konstanten gemacht habe.

Bliebt aber immer noch
Code:
//RadioButtons für Listener registrieren
		plus.addItemListener(new ItemListener()  {
		      public void itemStateChanged (ItemEvent evt) {
		        plusItemStateChanged (evt);// Hier ist Fehler
		      }
		 }); 
	}

Was ist nur falsch?
 

flo_richi

Mitglied
Prinzipiell ist der ItemListener umsonst, da du sowieso mit einem Button die Aktion auslöst...

Code:
   final class Button implements ActionListener {
      public void actionPerformed(ActionEvent e) {
           if(RadioButton1.isSelected()==true)
             //addier;
           if(RadioButton2.isSelected()==true)
             //multiplizier;
           if(RadioButton3.isSelected()==true)
      }
   }
 

mobile

Bekanntes Mitglied
Sehr gut, weniger zu schreiben.

Also das sieht schon alles ganz gut aus, keine Fehler mehr angezeigt. Wenn ich das Programm jetzt aber starte und klicke auf den JButton mit dem Listener
Code:
//Behandlung für die Steuer Elemente = ActionListener
	final class Button implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			if(plus.isSelected()==true) { 
				Rechner add = new Rechner();
				add.add();
			}
			else if(minus.isSelected() == true) {
				Rechner sub = new Rechner();
				sub.sub();
			}
			else if(mal.isSelected() == true) {
				Rechner sub = new Rechner();
				sub.sub();
			}
			else if(geteilt.isSelected() == true) {
				Rechner sub = new Rechner();
				sub.sub();
			}
		}
	}

Bekomme ich in der Konsole eine ganze Menge an Fehlern angezeigt. Gang oben steht:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at StartWindow$Button.actionPerformed(Main.java:46)
dann noch ganz viel weiteres Rot.
Also irgendwas in Zeile 46 oder?

Außerdem, passiert auch nichts, wenn ich den RadioButton in der MenüLeiste markieren will. Müsste doch normaler Weise son Pukt als zeichen für marjiert vor oder? Kann es sein, dass er deswegen die Fehlermeldung ausgibt, weil er nichts markiert findet und dem Zufolge auch nicht weis was er ausführen soll?

Muss ich
Code:
private JMenuBar plus;
		private JMenuBar minus;
		private JMenuBar mal;
		private JMenuBar geteilt;
oder
Code:
private JMenuBar plus = null;
		private JMenuBar minus = null;
		private JMenuBar mal = null;
		private JMenuBar geteilt = null;
oder irgendwie sowas in die Klasse schreiben, weil sonst erkennt der Listener das die RadioButtons plus usw irgendwie nicht
Hilfe, bin langsam am Verzweifeln!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
M Aktion ausführen wenn ein JRadiobutton deselektiert wird. AWT, Swing, JavaFX & SWT 3
P Wie lese ich einen jRadioButton aus? AWT, Swing, JavaFX & SWT 21
S JRadioButton und JCheckBox im JTree AWT, Swing, JavaFX & SWT 14
A Swing JRadioButton zeichnen nicht AWT, Swing, JavaFX & SWT 4
W Bei Programmstart jRadioButton automatisch auswählen AWT, Swing, JavaFX & SWT 2
W JRadioButton sauber untereinander anordnen AWT, Swing, JavaFX & SWT 3
G JRadioButton aktualisieren nicht... AWT, Swing, JavaFX & SWT 10
P JRadioButton.isSelected() Problem AWT, Swing, JavaFX & SWT 10
M Makierung bei JRadioButton entfernen AWT, Swing, JavaFX & SWT 5
H Swing Auf Änderung bei JRadioButton reagieren. AWT, Swing, JavaFX & SWT 3
Y JRadioButton soll JTextBox aktivieren UND deaktivieren AWT, Swing, JavaFX & SWT 3
Zettelkasten Swing JRadioButton festlegen AWT, Swing, JavaFX & SWT 2
M jradiobutton in jtable AWT, Swing, JavaFX & SWT 4
M JRadioButton refresh AWT, Swing, JavaFX & SWT 5
E JRadiobutton AWT, Swing, JavaFX & SWT 11
Guybrush Threepwood JRadioButton transparent AWT, Swing, JavaFX & SWT 2
J LayoutManager Layout über JRadiobutton Wechseln AWT, Swing, JavaFX & SWT 6
S Frage zu JRadioButton AWT, Swing, JavaFX & SWT 2
H JRadioButton.requestFocus() - Problem AWT, Swing, JavaFX & SWT 2
G JRadioButton-Platzierung AWT, Swing, JavaFX & SWT 4
W JRadioButton / JCheckBox problem AWT, Swing, JavaFX & SWT 6
F Problem mit JRadioButton AWT, Swing, JavaFX & SWT 4
S JradioButton oder Toggle AWT, Swing, JavaFX & SWT 2
M JradioButton und ItemListener AWT, Swing, JavaFX & SWT 4
D JRadioButton Object AWT, Swing, JavaFX & SWT 2
P JRadioButton in Schleife erstellen > wo liegt mein Fehler AWT, Swing, JavaFX & SWT 2
I JRadioButton disablen geht nicht AWT, Swing, JavaFX & SWT 4
K JLabel / JRadioButton in Tabelle anzeigen AWT, Swing, JavaFX & SWT 7
T JRadioButton abfragen AWT, Swing, JavaFX & SWT 1
G JRadioButton in eine Tabelle AWT, Swing, JavaFX & SWT 4
F JRadioButton dynamisch benennen? AWT, Swing, JavaFX & SWT 7
B JRadioButton nicht auswählbar AWT, Swing, JavaFX & SWT 2
G JRadioButton beim deselektieren Wert ändern. AWT, Swing, JavaFX & SWT 2
G JRadioButton dynamisch erzeugen AWT, Swing, JavaFX & SWT 6
J LineBorder bei JRadioButton AWT, Swing, JavaFX & SWT 3
G JRadioButton deaktivieren? AWT, Swing, JavaFX & SWT 6
R jRadioButton AWT, Swing, JavaFX & SWT 4
I DPI-Auflösungen von Druckern auslesen AWT, Swing, JavaFX & SWT 16
Z Swing Wert aus Textfeld auslesen -- null Fehler AWT, Swing, JavaFX & SWT 4
B Swing Posistion von JButton auslesen gibt immer 0 aus AWT, Swing, JavaFX & SWT 1
J JFram Location aus Konstruktor einer anderen Klasse auslesen AWT, Swing, JavaFX & SWT 10
it_is_all Swing Mehrere JComboBoxen - wie die versch. Boxen mit ItemStateChange auslesen? AWT, Swing, JavaFX & SWT 3
T Swing JTable auslesen und befüllen AWT, Swing, JavaFX & SWT 8
Soloeco Swing JTextField auslesen Klassen übergreifend AWT, Swing, JavaFX & SWT 16
M JavaFX - Array in View auslesen AWT, Swing, JavaFX & SWT 12
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
B JavaFX Symbole aus Fonts auslesen AWT, Swing, JavaFX & SWT 1
sandaime Swing Thread für CMD auslesen AWT, Swing, JavaFX & SWT 16
G Werte aus dem GUI Auslesen AWT, Swing, JavaFX & SWT 8
3 JComboBox - Action - Auslesen & Umwandeln AWT, Swing, JavaFX & SWT 9
X Swing Per Button die Labels und Textfelder auslesen AWT, Swing, JavaFX & SWT 8
D JavaFX Dynamisch erzeugte Checkboxen aus VBox auslesen AWT, Swing, JavaFX & SWT 3
thobren JavaFX Inhalte aus dynamischen vbox mit TextArea auslesen AWT, Swing, JavaFX & SWT 9
F geänderten Textfeldinhalt mit parse auslesen AWT, Swing, JavaFX & SWT 1
T Swing NullPointerException beim auslesen von jTextField - Anfänger! AWT, Swing, JavaFX & SWT 3
M JavaFX Wert aus Tabellenzelle auslesen AWT, Swing, JavaFX & SWT 4
M Swing JFreechart X-Achse Tick auslesen AWT, Swing, JavaFX & SWT 13
T Swing jComboBox auslesen mit Datenbankanbindung AWT, Swing, JavaFX & SWT 3
P Swing JTable Werte auslesen bzw überschreiben AWT, Swing, JavaFX & SWT 5
O Swing Text aus Textfield auslesen AWT, Swing, JavaFX & SWT 8
T Swing "Textgröße" aus OS auslesen AWT, Swing, JavaFX & SWT 3
D Swing Farbe aus Pixel vom JFrame auslesen AWT, Swing, JavaFX & SWT 17
R Array aus einem Objekt auslesen AWT, Swing, JavaFX & SWT 4
F Swing jComboBox auslesen AWT, Swing, JavaFX & SWT 6
T SWT Table (mit Spinner Spalte) Daten auslesen AWT, Swing, JavaFX & SWT 4
R Int aus JSpinner auslesen und Tabelle erstellen AWT, Swing, JavaFX & SWT 3
X Gridbaglayout gridx + gridy auslesen? AWT, Swing, JavaFX & SWT 7
M JTextField gibt beim auslesen null aus AWT, Swing, JavaFX & SWT 9
L SWT Eingabefelder beim Schließen des Forms auslesen AWT, Swing, JavaFX & SWT 3
D Applet Auslesen von Images aus Ressourcen AWT, Swing, JavaFX & SWT 29
F icon aus exe auslesen mithilfe des JFilechooser ? AWT, Swing, JavaFX & SWT 4
F Textfelder auslesen AWT, Swing, JavaFX & SWT 12
T 3D-Grafik (Java3D) Aus einem Objekt einer Szene (Würfel, Ebene) die wichtigen Randkoordinaten auslesen AWT, Swing, JavaFX & SWT 3
P gleichanfangende Zeilen solange auslesen bis es die gibt AWT, Swing, JavaFX & SWT 12
J JTextField auslesen lassen AWT, Swing, JavaFX & SWT 4
C Swing TextField auslesen AWT, Swing, JavaFX & SWT 21
C TextFelder auslesen AWT, Swing, JavaFX & SWT 20
E Textfeld auslesen AWT, Swing, JavaFX & SWT 2
F SWT Tabelle Zeile auslesen AWT, Swing, JavaFX & SWT 3
M Position eines JLabels mit getX() auslesen AWT, Swing, JavaFX & SWT 2
D SWT CheckBox auslesen (Window Builder Pro) AWT, Swing, JavaFX & SWT 2
E Wert eines selektierten Knotens in einem JTree auslesen AWT, Swing, JavaFX & SWT 3
J Mausposition auslesen AWT, Swing, JavaFX & SWT 4
L Name des JLabels auslesen bei Mouseclick AWT, Swing, JavaFX & SWT 2
A Swing Slider-Value auslesen und weitergeben AWT, Swing, JavaFX & SWT 4
B Swing Betrag mit Komma aus jformattedtextfield auslesen. AWT, Swing, JavaFX & SWT 2
Y JSlider Wert auslesen (Kategorien) AWT, Swing, JavaFX & SWT 2
K Text vom JTextField auslesen AWT, Swing, JavaFX & SWT 9
E werte aus List auslesen AWT, Swing, JavaFX & SWT 2
R Textfield auslesen auf Anforderung AWT, Swing, JavaFX & SWT 4
M Zeitkritisches auslesen von Tastatureingaben AWT, Swing, JavaFX & SWT 6
M Swing JTextField "onthefly" auslesen und berechnen AWT, Swing, JavaFX & SWT 7
C Swing JPasswordField Password auslesen AWT, Swing, JavaFX & SWT 7
K 2D-Grafik Fehler beim Farbe auslesen AWT, Swing, JavaFX & SWT 3
K JTable Werte auslesen AWT, Swing, JavaFX & SWT 2
T JSpinner in JTable: Problem beim Auslesen, funktioniert erst beim Zellwechsel AWT, Swing, JavaFX & SWT 7
3 2D-Grafik Rechtecke auf Bilder legen und auslesen AWT, Swing, JavaFX & SWT 4
P Swing ComboBox(en) in JTable auslesen und ausgeben AWT, Swing, JavaFX & SWT 11
1 Textfeld auslesen AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen


Oben