JLabel ActionListener Java

JLabel ActionListener Java
SP
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:17
0

Dzień dobry!
Natknąłem się na taki problem którego nie potrafię rozwiązać:

mam 3 klasy w pierwszej znajduje się przycisk do którego podpiety jest ActionListener. Po Naciśnięciu przycisku zmienia się wartość zmiennej która jest w innej klasie - i to działa.

Moja trzecia klasa wyglada tak:

Kopiuj
public class opisy extends JComponent {
	
	
	private JLabel  metallvl;
	
	
	
	public opisy(){
		
		metallvl = new JLabel("Kopalnia Metalu " + Stage.LVLMETAL);
		metallvl.setForeground(Color.WHITE);
		metallvl.setBounds(400,130,150,30);
		add(metallvl);
setBounds(0,0,Stage.SZEROKOSC,Stage.WYSOKOSC);
		setVisible(true);
		 

Stage.LVLMETAL to ta zmienna która się zmienia po naciśnięciu przycisku. Niestety zmiana ta nie uwidacznia się na ekranie.
oto jeszcze kod klasy głownej:

Kopiuj
 package Ogame;
import javax.swing.*;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;



public class Ogame extends JFrame {
	public Ogame(){
		
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(null);
		
		JComponent panel2 = new przyciski();
		add(panel2);
		
		JComponent panelopisow = new opisy();
		add(panelopisow);
		
		JPanel panel = new obrazki();
		add(panel);
		
		
		

		setBounds(0, 0, Stage.SZEROKOSC , Stage.WYSOKOSC);
		setVisible(true);
		
		
	}
	
public static void main(String[] args){
	SwingUtilities.invokeLater(new Runnable(){
		public void run(){
			new Ogame();
		}
	});
	 
	
}
}
edytowany 2x, ostatnio: bogdans
bogdans
!Wstawiaj kod w znaczniki <code=java></code>.
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
1

Zamieściłeś do niczego nieprzydatne kawałki kodu. Czy w ActionListenerze jest instrukcja:

Kopiuj
metallv1.setText...);

?


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
SP
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:17
0
Kopiuj
ActionListener al = new ActionListener(){
		public void actionPerformed(ActionEvent e){
			Object source = e.getSource();
				if(source == budkry){
					Stage.LVLMETAL +=1 ;
					
				}
			}
		}; 

tak wygląda mój ActionListener

a to jest klasa Stage

Kopiuj
 package Ogame;
public class Stage {
	
		public static final int WYSOKOSC = 720;
		public static final int SZEROKOSC = 1260;
		public static final int SZYBKOSC = 10;
		public static int LVLMETAL = 0 ;
		
}
edytowany 2x, ostatnio: Specur
SP
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:17
0

Nie miałem tego settext teraz wszystko działa. Dzięki :)

ccu
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Warszawa
  • Postów:11
1

Jeśli mogę wtrącić swoje 3 grosze, to mała sugestia na temat czytelności kodu.
Jak piszesz nazwy składające się z kilu słów - staraj się przy zmiennych używać camelCase (np. zamiast metallvl daj metalLevel), a dla stałych oddzielaj słowa "podłogą" (_). Nie warto również skracać niepotrzebnie tych nazw. Nie płacisz za miejsce na monitorze, więc czemu utrudniać sobie zrozumienie kodu za miesiąc czy rok.

Sprawa druga - paczki nazywamy zwyczajowo z małej litery, a klasy z wielkiej.

SP
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:17
0

Dziękuje za sugestie. Postaram się do nich stosować ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.