Losowanie JButtona

0

Hej, pracuje nad amatorskim AimBoosterem w javie. Ma on losować jbuttona (btn0, btn1, btn2 ...btn8) i wylosowanego ustawić text na "Click me", po poprawnym kliknięciu losuje następny i nastepny... W przyszłości dodam Timera i licznik błędów ;) .Mam kłopot z ustawieniem textu dla wylosowanego jbuttona:

  int numberOfButtons = 9;
        ArrayList<JButton> buttonList = new ArrayList<>();
        buttonList.add(btn0);
		buttonList.add(btn1);
		buttonList.add(btn2);
		buttonList.add(btn3);
		buttonList.add(btn4);
		buttonList.add(btn5);
		buttonList.add(btn6);
		buttonList.add(btn7);
		buttonList.add(btn8);
		for(int i=0; i<numberOfButtons; i++) {
            buttonList.add(new JButton("btn"+i));
        }
		Random random = new Random();
		JButton randomButton = buttonList.get(random.nextInt(buttonList.size()));
btn2 = new JButton("");
		btn2.addActionListener(new ActionListener() {
			
			
			public void actionPerformed(ActionEvent e) {
				if (randomButton == btn2) {
					btn2.setText("Click me!");
				}

			}
		});
		btn2.setBounds(200, 0, 100, 100);
		frame.getContentPane().add(btn2);
		
		btn3 = new JButton("");
		btn3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (randomButton == btn3) {
					btn3.setText("Click me!");
				}
			}
		});
		btn3.setBounds(0, 100, 100, 100);
		frame.getContentPane().add(btn3);
		
		btn6 = new JButton("");
		btn6.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (randomButton == btn6) {
					btn6.setText("Click me!");
				}
			}

i tak dla każdego btn'a.

Pozdrawiam :>

0

Używaj pętli dla inicjalizowania zmiennych...
Sprawdzasz, czy kliknięty obiekt miał napis "Click me", lub sprawdzasz czy ostatnio wylosowana liczba pokrywa się z indeksem aktualnego obiektu (buttona).

0

Chcesz by na losowo wybranym przycisku pojawiał się napis Click me!?
Potrzebny jest timer (ActionListenery są zbyteczne):

        timer = new javax.swing.Timer(czas_w_milisekundach,new ActionListener()
        {
            public void actionPerformed(ActionEvent evt)
            {
                for(JButton button: buttonList)
                {
                    button.setText(napis_domyślny);
                }
                buttonList.get(random.nextInt(buttonList.size())).setText("Click me!");
            }
        }); 
        timer.start();
0

Nie ma potrzeby (zwykle) do kolejnych buttonów przypisywać kolejne instancje listenera. Często wystarczy jeden wspólny, w Event są pola które pozwalają ustalić skąd zdarzenie przyszło

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