Java - 单击按钮时更改标签文本

时间:2015-11-09 15:19:37

标签: java swing random jbutton jlabel

我有一个问题我无法解决。

我想要这个:

当我打开gui时,我会显示一个随机数字和一个显示“更改号码”的按钮。

然后,当点击该按钮时,我希望先前的随机数变为另一个随机数,依此类推。

这是我的代码:

public class RandomDisplayPanel extends JPanel {




    public RandomDisplayPanel() {

    JPanel panel = new JPanel();
    add(panel);
    JPanel inside = new JPanel();
    panel.setBackground(Color.yellow);


    JButton sendButton = new JButton("Send");

    Random generator = new Random();
    int num;
    num = generator.nextInt(100) +1;
    JLabel numero = new JLabel("" + num);


    inside.add(numero);
    inside.add(sendButton);
    panel.add(inside);


    sendButton.addActionListener(new RandomDisplayPanel.RandomListener());
}

private class RandomListener implements ActionListener {


        @Override
        public void actionPerformed(ActionEvent e) {

            Random generator = new Random();

            int num;
            num = generator.nextInt(100) +1;
        }

    }
}

我该怎么做?提前谢谢你:)

4 个答案:

答案 0 :(得分:2)

您可以将(JLabel)号码传递给听众,如下所示:

sendButton.addActionListener(new RandomDisplayPanel.RandomListener(number));

private class RandomListener implements ActionListener {
    private JLabel target;
    public RandomListener(JLabel target) {
        this.target = target;    
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        Random generator = new Random();

        int num;
        num = generator.nextInt(100) +1;
        this.target.setText(String.valueOf(num));
    }
}

希望这有帮助!

答案 1 :(得分:0)

在听众中添加numero.setText(num + "");

编辑:将JLabel numero声明为类变量,它将起作用。

答案 2 :(得分:0)

您需要在ActionPreformed方法中有效地调用numero.setText(num)。我建议可能添加类似于此的检查声明..

if(e.getSource() == sendButton) {
    numero.setText(num);
}

我看到另一个问题,因为你可能无法知道numero或sendButton的值。你可以在主类中将它们作为公共变量,或者你可以将它们作为参数传递。

答案 3 :(得分:0)

要获取随机数,您可以使用Math.random();并将其乘以10,例如加1。 (然后它在1到10之间) 要设置按钮文本,请使用

Button myButton=(Button)this.findViewById(R.id.yourButtonsID);
    myButton.setText(yourRandomNumber);