AWT RadioButtons unauswählbar machen

Java-Insel

Aktives Mitglied
Hallo,
ich habe folgendes Problem:
Ich habe zwei CheckBoxGroups. Nur wenn in der ersten ein bestimmtes Element ausgewählt ist, soll die zweite "enabled" sein, also auswählbar sein. Dazu habe ich folgenden Code:
Java:
//erste Group:
CheckboxGroup B_berechnung = new CheckboxGroup();
Checkbox c1 = new Checkbox("Zeit",B_berechnung,true);
Checkbox c2 = new Checkbox("Weg",B_berechnung,false);
Checkbox c3 = new Checkbox("Beschleunigung",B_berechnung,false);
//zweite Group:
CheckboxGroup cgifzeit = new CheckboxGroup();
Checkbox ifc1 = new Checkbox("Weg",cgifzeit,true);
Checkbox ifc2 = new Checkbox("Beschleunigung",cgifzeit,false);
//Bedingungen:
if(B_berechnung.getSelectedCheckbox() == c1) {
	ifc1.setEnabled(true);
	ifc2.setEnabled(true);
} else {
	ifc1.setEnabled(false);
	ifc2.setEnabled(false);
}
Bitte wegen der Namen nicht Böse sein.
Meine Frage wäre jetzt nur: brauche ich einen EventListener oder geht das auch so wie ichs jetzt gemacht habe? Oder hab ich nur einen kleinen logischen / syntaktinesistischen 🙂D) Fehler? Compiler-Ansagen gibts übrigens nicht, und ich habe auch die Checkboxen geaddet. Das deaktivieren geht nur halt nicht.
 
Allerdings hätte ich da noch eine Frage: Kann ich einen EventListener auch gleich zu einer CheckBoxGroup hinzufügen oder zu einem Panel oder so? Ich habs mal ganz einfach mit
Java:
B_berechnung.addActionListener();
B_berechnung.addMouseListener();
und bei einem Panel, wo alles drauf liegt, probiert, brachte aber nichts. Ebenso bei den Checkboxen. Kennt da jemand einen Umweg oder so?
 
Am besten du definierst dir nen ActionListener und übergibst diesen allen ComboBoxen.
Beim Panel kannst du nichts auswerten und CheckBoxGroup kannst du keinen Listener übergeben.
 
Ach, jetzt weiß ich warums nicht funktionierte! Ich habe immer
Java:
c1.addActionListener(new MeinActionListener());
geschrieben, aber ich bräuchte - glaube ich - einen MouseListener oder etwas in der Art... ich probiers mal aus.

EDIT: Gesagt, getan. Aber: da die Methode in einer anderen Klasse ist, müsste ich die CheckboxGroups public (oder etwas ähnliches) machen. Hab ich auch gemacht: Hat aber nichts gebracht.
Java:
class MeinMouseListener extends MouseAdapter {
        public void mouseClicked(MouseEvent e) {
	        if(B_berechnung.getSelectedCheckbox() == c1) {
		        ifc1.setEnabled(true);
			ifc2.setEnabled(true);
	        } else {
			ifc1.setEnabled(false);
			ifc2.setEnabled(false);
		}
	}
}
public CheckboxGroup B_berechnung,cgifzeit;
public Checkbox c1,c2,c3,ifc1,ifc2;
[...]
c1.addMouseListener(new MeinMouseListener());
c2.addMouseListener(new MeinMouseListener());
c3.addMouseListener(new MeinMouseListener());
Was habe ich da wohl falsch gemacht?
 
Zuletzt bearbeitet:
Mal ein Beispiel ich denk das sollte dir helfen 🙂

Java:
public class CheckBoxTest {
	
	private Checkbox box,box2,box3,box4;
	private CheckboxGroup boxgrp1;
	
	public CheckBoxTest(){
		JFrame frm=new JFrame();
		frm.setSize(400, 400);
		JPanel pnl=new JPanel();
		
		boxgrp1=new CheckboxGroup();		
		box=new Checkbox("Box1",boxgrp1,false);
		box2=new Checkbox("Box2",boxgrp1,true);
		box.addItemListener(new MyListener());
		box2.addItemListener(new MyListener());
		
		CheckboxGroup boxgrp2=new CheckboxGroup();		
		box3=new Checkbox("Box3",boxgrp2,true);
		box4=new Checkbox("Box4",boxgrp2,false);		
		
		pnl.add(box);
		pnl.add(box2);
		pnl.add(box3);
		pnl.add(box4);
		frm.add(pnl);
		frm.setVisible(true);

		
	}
		
	private class MyListener implements ItemListener{
		@Override
		public void itemStateChanged(ItemEvent e) {
			// TODO Auto-generated method stub	
			
			if(boxgrp1.getSelectedCheckbox()==box2){
				box3.setEnabled(true);
				box4.setEnabled(true);
			}else{
				box3.setEnabled(false);
				box4.setEnabled(false);
			}
		}		
	}
		
	

	public static void main(String[] arghs){
	
		new CheckBoxTest();
	}	
}

[WR]ich habs jetzt mal mit der Checkbox gemacht, da du die auch benutzt hast und keine JCheckBox genommen
[/WR]
 
Zuletzt bearbeitet:
Also als erstes solltes du sowas machen wie
Java:
MeinMouseListener xy=new MeinMouseListener();
c1.addMouseListener(xy);
c2.addMouseListener(xy);
...

Zweitens solltest du JCheckBox nehmen statt CheckBox.
Und drittens was am wichtigsten ist: wenn du schon nen MouseListener selber schreibst dann lass ihn auch von MouseListener erben und nicht von MouseAdapter.
 
Dankeschön! Ich hab's jetzt zwar nicht mit JCheckbox gemacht, aber das mit dem ItemListener hat mir echt weitergeholfen. Das Program läuft jetzt einwandtfrei und ich bin zufrieden. TOLL!:toll:
 
Zum Beispiel von pl4gu33:
Man sollte nie AWT Komponenten mit Swing Komponenten vermischen. Entweder JFrame mit JCheckbox oder Frame mit Checkbox. Swing ist zu bevorzugen.
 
Zum Beispiel von pl4gu33:
Man sollte nie AWT Komponenten mit Swing Komponenten vermischen. Entweder JFrame mit JCheckbox oder Frame mit Checkbox. Swing ist zu bevorzugen.

jap sry,... hast du recht, ich hatte erst JCheckBox benutzt und dann erst gesehn, dass in dem Beispiel CheckBox benutzt wurde und hatte nur die Box geändert 🙂
 

Zurück
Oben