jpanel a keyevents

0

Witam, mam problem przy dodaniu JPanel'u do JFram'a. Generalnie nic trudnego, ale kiedy przy samym JFrame klawisze działają bez zarzutu, tak, gdy dodam panel z JTextPanel to przestają reagować. Próbowałem ustawiać JTextPanel, żeby był niezmienialny oraz wyłączałem Focusa, ale to nic nie pomaga. Spróbowałem również przerobić inta na stringa i zwyczajnie go wrzucić jako wiadomość w panelu, ale dane się nie aktualizują. Co można na to poradzić? Wrzucam fragmenty kodu:

 int gracz1 = 10, gracz2 = 10;
	String gracz1string = Integer.toString(gracz1);
    String gracz2string = Integer.toString(gracz2);
    String zycie_gracza_pierwszego = ("Życie gracza pierwszego:"), zycie_gracza_drugiego = ("Życie gracza drugiego:");
    
if (a == s && b == z)
		{
        	gracz2 = gracz2 - 3;
			System.out.println("Dostałeś!");
			System.out.println("Twoje życie to "+ gracz2);
			
			if (gracz2 <= 0)
			{
				JOptionPane.showMessageDialog(null,"Koniec gry",null,JOptionPane.INFORMATION_MESSAGE);
				System.exit(1);
			}
		} 
 public void x()
	{
		
		Box wyniki = new Box(BoxLayout.Y_AXIS);
		wyniki.setBorder(BorderFactory.createEmptyBorder(10,10,250,10));
		wyniki.add(new Label(zycie_gracza_pierwszego));
		wyniki.add(new Label(gracz2string));
		wyniki.add(new Label(zycie_gracza_drugiego));
		wyniki.add(new Label(gracz2string));
		
		
		
		teraz teraz = new teraz();	
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		addKeyListener(this);
		this.requestFocus(); 
		
		
		
		
		this.add(BorderLayout.CENTER, teraz);
		this.add(BorderLayout.EAST, wyniki);
		this.setSize(515,347);
		this.setVisible(true);
		this.setResizable(false);
		this.setTitle("Gra na zaliczenie");
		wyniki.setVisible(false);

	}

To wszystko, co jest potrzebne. Jest to wersja z dodaniem tekstu do panelu przez co się zmienne nie nadpisują, mimo, że program działa ładnie i w wierszu widzę jak są odejmowane punkty życia.

0

Jeżeli ustawiasz event na frame a później dodajesz do niego panel to ten panel przysłania frame i nie ma możliwości żeby jakąś akcje wykonać.
Przenieś event na panel.

0

Przeniosłem tak jak mi poradziłeś event na panel, ale to nic nie pomogło. Jest dokładnie ta sama sytuacja. Wszystko działa dopóki nie zrobię setVisible(true); . Nie mam na to pomysłu, nie da się tego zrobić zwyczajnie bez żadnych JTextField?

Nie da się zrobić zwyczajnie:

wyniki.add(new Label(zycie_gracza_pierwszego));
		wyniki.add(new Label(gracz2string)); 

???
Kwestia jeszcze samego repaint(); bo może to co na górze napisałem może i działa, ale się nie odświeża. Ale nigdzie mi nie przechwytuje metody repaint();

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