JCheckBox i zmiana wartości boolean w metodzie actionPerformed()

0

Witam
Pisząc małą aplikację graficzną wykorzystującą Swing dodałem do GUI JCheckBox, który po zaznaczeniu lub odznaczeniu generuje zdarzenie które jest przechwytywane tak samo jak zdarzenie innych komponentów GUI w metodzie actionPerforme(), gdy metoda przechwyci zdarzenie wygenerowane przez ten komponent, powinna zmienić wartość zmiennej typu boolean na przeciwną, niestety tego nie robi i nie mam pojęcia co jest źle.

public class Interfejs implements ActionListener {  //klasa tworząca GUI

// inne zmienne składowe , głównie puste referencje do których zostanie później przypisane obiekty pozostałych komponentów
//.
//.
private JCheckBox plik; 
private boolean czyplik=false ; // zmienna przechowująca wartość która miał zmienić słuchacz zdążeń 

public Interfejs() {  //kostruktor
//tworzy ramkę i komponenty
//.
//.
// między innymi:

                plik=new JCheckBox("Zapis w pliku"); 
		plik.setBounds(200, 140, 100, 40);
		plik.setActionCommand("plik");
		ramka.add(plik);// ramka to główne okienko (obiekt klasy JFrame)
}//zamyka konstruktor

public void actionPerformed(ActionEvent ae)  { //Przechwytuje zdążenia
//.
//.
		if(ae.getActionCommand().equals("plik"))     //sprawdza czy JCheckBox wygenerował zdarzenie i powinna zmienic wartość zmiennej  'czyplik' na odwrotną lecz tego nie robi
		{
			if(czyplik==false) czyplik=true;
			if(czyplik==true) czyplik=false;
		}
	}



	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
            new Interfejs(); 
	}

}
0

Omg, do komponentu musisz dodać słuchacza. Kod też można skrócić

czyplik = !czyplik

Jeszcze lepiej

czyplik = plik.isSelected();

Pytanie, czy zmienna czyplik jest Ci w ogóle potrzebna.

0
bogdans napisał(a):

Omg, do komponentu musisz dodać słuchacza

Dodałem i działa, generalnie głupie niedopatrzenie.

Zmienna "czyplik" jest przekazywana jako parametr do konstruktora klasy odpowiedzialnej za obliczenia, której to obiekt o ile wartość naszej zmiennej wynosi true tworzy obiekt klasy odpowiedzialnej za zapis każdej operacji.

Dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1