每当我按下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');
}
}
还有更多代码,但这是唯一重要的代码。
答案 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 方法,每次按下按钮都会进行分配。