Losowanie JButtona

Odpowiedz Nowy wątek
2018-12-16 20:14
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 :>

edytowany 1x, ostatnio: bogdans, 2018-12-17 07:38

Pozostało 580 znaków

2018-12-16 21:53
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).

Pozostało 580 znaków

2018-12-17 08:33
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();

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2018-12-17 17:51
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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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