我有一个问题我无法解决。
我想要这个:
当我打开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;
}
}
}
我该怎么做?提前谢谢你:)
答案 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);