Как увеличивать числа с помощью прослушивателей событий и средства просмотра виджетов в Java? - PullRequest
0 голосов
/ 11 июля 2020

Я пишу WidgetViewer GUI, где при нажатии кнопки «go вверх / вверх» генерируется случайное число от 1 до 10 (включительно), которое добавляется к левой метке, и другое случайное число от 1 до 10 (включительно) создается и добавляется к правой метке.

Требуются следующие виджеты: кнопка с меткой «go вверх / вверх», метка, инициализированная значением 0 (левая метка), и метка, инициализированная значением 0 (правая метка).

Это то, что у меня есть до сих пор:

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.Jbutton;
    import javax.swing.JLabel;
   
    public class UpDown {
           private JLabel jleft;
           private JLabel jright;
           
           public UpDown() {
                  WidgetViewer wv = new WidgetViewer();
                  jleft = new JLabel("0");
                  jright = new JLabel("0");
                   
                  JButton upUp = new JButton("go up/up");
                  upUp.addActionListener(new ActionListener() {
                       public void actionPerformed(ActionEvent e) {
                              String lval = jleft.getText();
                              int newlVal = Integer.parseInt(lval) + 1 + (int)(Math.random() * (10));
                              jleft.setText(String.valueOf(newlVal));
                              String rval = jright.getText();
                              int newrVal = Integer.parseInt(rval) + 1 + (int)(Math.random() * (10));
                              jleft.setText(String.valueOf(newrVal));
                        }
                  });
      }

Однако, когда я запускаю это и нажимаю кнопку, отображается только новый номер каждый раз без добавления к нему. Как я могу увеличить его каждый раз?

1 Ответ

0 голосов
/ 11 июля 2020

левое значение обрабатывается правильно, правое значение тоже вычисляется правильно ... но сохраняется в ui-элементе левого значения ...

jleft.setText(String.valueOf(newrVal));

=> перезапись только что ранее верного левого значение, сбросив его. просто замените на

jright.setText(String.valueOf(newrVal));
...