Prosta gra, problem z eventem

0

Robię "grę" polegającą na tym, że na ekranie pojawiają się ikonki i trzeba w nie klikać :D (wiem, że fajna). Wszystko jest ok, ikonki się pokazują i jak na nie klikam to znikają, ale czasem po kliknięciu nic się nie dzieje (kliknę za 1 lub 2s drugi raz i zniknie).

oto kod (pewnie zrobiłem to w najgorszy możliwy sposób :D)

btnAddApple.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				long start = System.currentTimeMillis();
				
				for (int i = 0 ; i < 15 ; i ++)
				{
				
				final JLabel lblNewLabel = new JLabel();
				lblNewLabel.setBounds(WIDTH,HEIGHT,35,35);
				contentPane.add(lblNewLabel);
				ImageIcon wtf = new ImageIcon("jakis_adres");
				lblNewLabel.setIcon(wtf);
				lblNewLabel.setVisible(true);
				Random generator = new Random();
				WIDTH = generator.nextInt(800);
				HEIGHT = generator.nextInt(800);
				
				
				lblNewLabel.addMouseListener(new MouseAdapter() { // <=- cos tutaj :P
					@Override
					public void mouseClicked(MouseEvent e) {
						lblNewLabel.setBounds(0, 0, 0, 0);
						wartosc++;
						String to = Integer.toString(wartosc);
						Wynik.setText(to);
						
1

Próbujesz założyć koszulę przez rękaw.
Obsługujesz jakąś akcję i w niej w pętli tworzysz ileś tam labeli ze swoimi listenerami, który na dodatek każdy jeden jest nowym obiektem...
Po niewielkiej liczbie działań wyczerpujesz całą pamięć sterty, a całość chodzi wolniej i wolniej, a potem pada lub dziwnie się zachowuje.
Klasyczny wyciek, a raczej rzeka znikającej pamięci.
Każda operacja add...listener powoduje powstanie gdzieś referencji do obiektu, który mu podajesz (w tym anonimowe new XXX). W efekcie wszystkie obiekty będą miały swoje referencje, więc nigdy nie znikną, a przy każdej obsłudze zdarzenia będzie ich coraz więcej do obsłużenia, choć w zamyśle wszystkie robią to samo.
Reszty kodu nie widzę, więc wykombinuj sobie pozostałe grzechy. ;)

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