gpt4 book ai didi

java - JButton 上的 ActionListener 不执行任何操作

转载 作者:行者123 更新时间:2023-12-02 11:12:14 25 4
gpt4 key购买 nike

我的 Actionlistener 有一个小问题,当我单击按钮时没有任何反应?我不知道问题出在哪里,所以另一双眼睛可以帮助我:)

 public class GameOptions extends JPanel implements ActionListener{ 
public GameOptions(){
System.out.println("GameOptions Class test blabla");

easyButton().addActionListener(this);
mediumButton().addActionListener(this);
hardButton().addActionListener(this);

JPanel center = new JPanel(new GridLayout(4,1,10,10));
center.add(new JLabel("Chose Difficulty Level"));
center.add(easyButton());
center.add(mediumButton());
center.add(hardButton());

this.add(center, BorderLayout.CENTER);
this.setPreferredSize(this.getPreferredSize());
this.setFocusable(true);
this.requestFocusInWindow();
}
private JButton easyButton(){
JButton levelEasy = new JButton("Easy");
return levelEasy;
}
private JButton mediumButton(){
JButton levelMedium = new JButton("Medium");
return levelMedium;
}
private JButton hardButton(){
JButton levelHard = new JButton("Hard");
return levelHard;
}
@Override
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if(src == easyButton()){
System.out.println("Easy");
}
else if(src == mediumButton()){
System.out.println("Medium");
}
else if(src == hardButton()){
System.out.println("Hard");
}
else{

}
}
}

最佳答案

您的 xxxButton() 方法每次都会创建新的 JButton,因此您将 ActionListener 添加到新创建的 JButton,然后丢弃该按钮,然后添加一个完全不同的 JButton,一个没有 ActionListener 的 JButton到 GUI。

建议:创建 JButton,为其设置一个变量,添加 ActionListener,然后将相同按钮添加到 GUI。

所以代替这个:

easyButton().addActionListener(this);  // creates one JButton

center.add(easyButton()); // creates a completey different JButton

这样做:

JButton easyButton = easyButton();
easyButton.addActionListener(this);

center.add(easyButton);

请注意,如果这是我的代码,我不确定我是否会使用 JButton。相反,也许我会使用 JRadioButtons 或 JComboBox。

关于java - JButton 上的 ActionListener 不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21739570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com