Zmiana wartosci zmiennej klasy

0

Zrobiłem mały programik-zgadywankę.

 package TestZnajomosciPilkarzy;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Apka extends JFrame {
	private JPanel panel;
	private JButton zgadujWisla;
	private JLabel pktW, pktC, pktS;
	private String[] pilkarzeWisly = { "Zaluska", "Guzmics", "Glowacki", "Cywka", "Sadlok", "Boguski", "Brlek",
			"Malecki", "Popovic", "Brozek", "Pietrzak" };

	List<String> ListWisla = new ArrayList<String>();
	private String input;
	private int LiczbaPktWis;

	public Apka() {
		this.setTitle("Test znajomosci pilkarzy ");
		this.setSize(450, 340);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);
		setVisible(true);

		System.out.println(LiczbaPktWis);

		panel = new JPanel();
		add(panel);
		pktW = new JLabel("Liczba pkt za Wisle: " + LiczbaPktWis);
		panel.add(pktW);
		zgadujWisla = new JButton("Kliknij aby zgadywac pilkarzy Wisly");
		panel.add(zgadujWisla);
		zgadujWisla.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				for (String x : pilkarzeWisly) {
					ListWisla.add(x);
				}

				for (int i = 1; i < pilkarzeWisly.length + 1; i++) {
					int liczba = 0;
					input = JOptionPane.showInputDialog("podaj pilkarza Wisly:" + i);
					if (ListWisla.contains(input)) {
						LiczbaPktWis++;
						ListWisla.remove(input);
						JOptionPane.showMessageDialog(null, "dobrze");
					} else {
						JOptionPane.showMessageDialog(null, "Zle");
					}

				}
				JOptionPane.showMessageDialog(null, "Zdobyles " + LiczbaPktWis + "punktow");
				
			}

		});
	
		

	}

	public static void main(String[] args) {
		new Apka();

	}

}

No i jak zrobić teraz żeby zmienna LiczbaPktWis wyswietlana w JLabel, zmieniła się po zakończeniu wykonywania testu?
Chodzi mi o to że zmienia się tuż po zakończeniu testu,ponieważ wyświetla się poprawny komunikat o ilości zdobytych pkt,ale w polu JLabel wciąz widnieje 0.Domyślam się że wartość tej zmiennej zmienia się tylko w pętli ale jak w takim razie można zrobić żeby ta zmienna po zakończeniu pętli już na stałe zmieniła wartość?

1

Źle się domyślasz, wartość zmiennej LiczbaPktWis ulega zmianie, ale nie odświeżasz napisu na JLabel.

                    if (ListWisla.contains(input)) {
                        LiczbaPktWis++;
                        pktW.setText("Liczba pkt za Wisle: " + LiczbaPktWis);
                        ListWisla.remove(input);
                        JOptionPane.showMessageDialog(null, "dobrze");

                    }

Jak użytkownik kliknie ponownie w przycisk, to będzie zgadywał przy innej (większej) liście zawodników - niektórzy zawodnicy będą na niej dwa razy..

            public void actionPerformed(ActionEvent arg0) {
                ListWisla.clear(); //dopisz ten wiersz
                for (String x : pilkarzeWisly) {
                    ListWisla.add(x);
                }

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