Prüfung, ob JRadioButton in ButtonGroup ausgewählt wurde

Tinipieps

Mitglied
Hallo!

Ich hab ein Programm geschrieben, in dem ein JRadioButton innerhalb einer BuutonGroup ausgewählt werden soll.

Code:
ok.addActionListener(new ActionListener() {
			/**
			 * Methode legt fest, was passiert, wenn der "OK"-Button gedrueckt wird
			 */
			@Override
			public void actionPerformed(ActionEvent arg0) {
				Process myProcess = null;
				if (this.isSelected(button)){
					try {
						// Versuch, NinJo zu starten
						myProcess =  Runtime.getRuntime().exec
							("rundll32 url.dll,FileProtocolHandler " +
							"D:\\NinJo\\release_"+release+"\\client\\bin\\run_client.bat");
						myProcess.waitFor();
						// Fenster schließen
						System.exit(0);
					
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				else
					JOptionPane.showMessageDialog(AuswahlMenue.this, 
							"Bitte waehlen Sie einen Server aus.");
			}

			/**
			 * Diese Methode prüft, ob ein JRadioButton ausgewaehlt wurde
			 * @param button
			 * @return true, falls Button ausgewaehlt wurde
			 */
			private boolean isSelected(JRadioButton button) {
				DefaultButtonModel model = (DefaultButtonModel)button.getModel(); 
				System.out.println(model.getGroup().isSelected(model));
				return model.getGroup().isSelected(model); 
			}
			
		});

Leider gibt mir die selbstgeschriebene Methode isSelected(JRadioButton button) immer false zurueck, weshalb auch immer der Dialog geöffnet wird, dass man bitte einen Server auswählen sollte!
Was hab ich falsch gemacht?

Restlicher vielleicht wichtiger Code:

Code:
/**
	 *  RadioButtonGroup erstellen mit Werten aus Konfigurationsdatei
	 */
	
	private void fillRadioBox() {
		String[]keys=ac.getServerKeys();
		Arrays.sort(keys);
		for (String i:keys ) {
			button = new JRadioButton (i, false);

				button.addActionListener(new ActionListener() {
					@Override
					public void actionPerformed(ActionEvent e) {
					
							try{
								AuswahlMenue.namingAendern(button.getText());	
							} catch (Exception ex) {
								ex.printStackTrace();
								JOptionPane.showMessageDialog(
										AuswahlMenue.this, "FEHLER: "+ex);
							}
						}
				});
			auswahl.add(button);
			panel.add(button);
		}
	}
Code:
	/**
	 * Diese Methode aendert den Eintrag in der Datei "namingservices.cfg"
	 * @param buttonWert (Wert, der durch JRadioButton ausgewaehlt wurde)
	 */
	private static void namingAendern(String buttonWert) {
		
	// Datei "namingservices.cfg" aendern
		String namingPath = "D:\\NinJo\\release_"+release+"\\naming\\namingservices.cfg";

		// StringBuffer anlegen, um Originaldatei auszulesen
		StringBuffer store = new StringBuffer();
    	int lineLength = 0;

    	try {
    		// File oeffnen
    		File input = new File(namingPath);
    		FileReader in = new FileReader(input);
    		BufferedReader br = new BufferedReader(in);
    		// Inhalt Zeile fuer Zeile auslesen und an StringBuffer anhaengen
    		String line = br.readLine();
    		while(line != null){
    			store.append(line+"\n");
    			lineLength = line.length() + 1;
    		    			
    			// um Zeile mit Naming zu veraendern
    			if ( line.startsWith("NNS_")){
    				if (buttonWert.equals("ggsserver1") || buttonWert.equals("ggsserver0"))
    					store.replace(store.length()-lineLength, store.length(), 
        						("NNS_GeoInfo_"+buttonWert+"\t GeoInfo \t GeoInfo_BSt\t"
        								+buttonWert+".geoinfo.de\t 60000 \n"));
    				else 
    					store.replace(store.length()-lineLength, store.length(), 
    							("NNS_GeoInfo_"+buttonWert+"\t GeoInfo \t GeoInfo_BSt\t"
    									+buttonWert+".awg.de\t 60000 \n"));
    				
    			}	
    			line = br.readLine();
    		}

    		br.close();
    		
    	} catch(IOException ioex){
    		ioex.printStackTrace();
    	}
    	// StringBuffer als String uebergeben -> muss in OutputStream gepackt werden
		String ergebnis=store.toString();
		System.out.println(ergebnis);
		
		
		OutputStream output;
		try {
			output = new FileOutputStream("D:\\NinJo\\release_"+release+"\\naming\\namingservices.cfg");
			PrintWriter pw = new PrintWriter(output);
			pw.write(ergebnis);
			
			System.out.println("namingservices.cfg wurde geaendert");
			
			pw.close();
			output.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	
    }
 
Hallo,

bin jetzt nicht so der Experte aber...

Probier es mal vielleicht so, statt:
Code:
/**
 * Diese Methode prüft, ob ein JRadioButton ausgewaehlt wurde
 * @param button
 * @return true, falls Button ausgewaehlt wurde
 */
private boolean isSelected(JRadioButton button) {
                                DefaultButtonModel model = (DefaultButtonModel)button.getModel(); 
				System.out.println(model.getGroup().isSelected(model));
				return model.getGroup().isSelected(model); 
			}

einfach:
Code:
/**
 * Diese Methode prüft, ob ein JRadioButton ausgewaehlt wurde
 * @param button
 * @return true, falls Button ausgewaehlt wurde
 */
private boolean isSelected(JRadioButton button) {
                               				
				return button.isSelected(); 
			}

OK, das ist jetzt vielleicht etwas zu primitiv, aber vielleicht funktioniert es.

Ob ein JRadioButton ausgewählt wurde oder nicht ist unabhängig von der ButtonGroup.
Mit der ButtonGroup wird meines Wissens nur geregelt, daß jeweils nur ein Button ausgewählt sein kann. Mit der Abfrage ob ein Button ausgewählt ist, hat die ButtonGroup aber nichts zu tun.

MfG
hansmueller
 
Ob ein JRadioButton ausgewählt wurde oder nicht ist unabhängig von der ButtonGroup.
Mit der ButtonGroup wird meines Wissens nur geregelt, daß jeweils nur ein Button ausgewählt sein kann. Mit der Abfrage ob ein Button ausgewählt ist, hat die ButtonGroup aber nichts zu tun.

Moin,

so ist es :)

Aber die eigene Funktion ist doich ein bisschen doppelt-gemoppelt, oder
Java:
/* Diese Methode prüft, ob ein JRadioButton ausgewaehlt wurde
* @param button
* @return true, falls Button ausgewaehlt wurde
*/
private boolean isSelected(JRadioButton button) 
{
    return button.isSelected(); 
}

Was soll denn diese Methode anders bringen als der direkte Aufruf von "button.isSelected()", der ja eben auch einen bool'schen wert zurück gibt :confused::confused:

Ruf' an der entsprechenden Stelle einfach direkt button.isSelected() auf und alles wird gut ;)

Gruß
Klaus
 
Zurück