JButton不会从ArrayList生成随机字符串

时间:2016-08-12 08:01:13

标签: java arraylist random jframe jbutton

每当我按下String中的按钮时,我希望我的Array中的新JFrame显示在控制台中。 但是,当我按下JFrame中的按钮时,它只显示1个字符串,它不会改变。

这是我的代码:

private JFrame frame;
private JPanel panel;
private JButton rand;
private String random;

public Start() {

    frame = new JFrame("Java Jar exec");
    frame.setVisible(true);
    frame.setSize(450, 305);
    frame.setLocation(610, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);  

    panel = new JPanel();
    panel.setLayout(null);

    rand = new JButton("Rand");
    rand.setBounds(10, 10, 10, 10);
    rand.addActionListener(this);
    rand.setActionCommand("rand");
    rand.addMouseListener(this);

    panel.add(rand);
    frame.add(panel);

    ArrayList<String>arr = new ArrayList <String>();
    arr.add("1");
    arr.add("2");
    arr.add("3");
    arr.add("4");

    random = arr.get(new Random().nextInt(arr.size()));

}

@Override
public void actionPerformed(ActionEvent e) {

    String name = e.getActionCommand();

    if (name.equals("rand")) {
        System.out.print(random + '\n');
    }
}

还有更多代码,但这是唯一重要的代码。

1 个答案:

答案 0 :(得分:1)

我认为你应该改变你的 actionPerformed 方法:

@Override
public void actionPerformed(ActionEvent e) {

    String name = e.getActionCommand();

    if (name.equals("rand")) {
        random = arr.get(new Random().nextInt(arr.size())); //generating random number should be here
        System.out.print(random + '\n');
    }
}

问题是,如果你在 Start()方法中放置生成随机数的行, random 变量将只初始化一次,但是当它在< em> actionPerformed 方法,每次按下按钮都会进行分配。