JLabel ActionListener Java

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:

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:

 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();
		}
	});
	 
	
}
}
1

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

metallv1.setText...);

?

0
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

 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 ;
		
}
0

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

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.

0

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

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