gpt4 book ai didi

JButton 选择/ActionPerformed 的 Java Swing 问题

转载 作者:行者123 更新时间:2023-11-30 11:05:37 24 4
gpt4 key购买 nike

我目前正在开发一个迷宫游戏,我有一个用户可以更改控件的设置,为了做到这一点,每个游戏控件(移动等)对应了几个按钮。要更改游戏控制,用户必须单击按钮,然后按下一个键,之后控制键应该已经更新,例如按钮文本,它应该如下所示:UP_MOVEMENT = NEW_CONTROL。因此,例如,如果我想将 UP_MOVEMENT 键更改为“P”键,我应该在 UP_MOVEMENT 按钮上单击一次,然后按“P”键即可完成。问题是,一旦我单击按钮并按下想要的键以查看按钮的文本更改后,我必须再次单击它并且我希望它是即时的。这是我的代码的一部分:

public JPanel createKeyBidings() {
JPanel buttonBox = new JPanel();

JButton upKey = new JButton("UP="+ KeyEvent.getKeyText(settings.getUp()));
JButton downKey = new JButton("DOWN="+ KeyEvent.getKeyText(settings.getDown()));
JButton leftKey = new JButton("LEFT="+KeyEvent.getKeyText(settings.getLeft()));
JButton rigthKey=new JButton("RIGTH="+KeyEvent.getKeyText(settings.getRight()));
JButton shoot = new JButton("SHOOT");

upKey.addKeyListener(this);
downKey.addKeyListener(this);
leftKey.addKeyListener(this);
rigthKey.addKeyListener(this);
shoot.addKeyListener(this);

upKey.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {

if (keyPressed != null) {
settings.setUp(keyPressed.getKeyCode());
upKey.setText("UP=" + keyPressed.getKeyChar());
}
}
});

buttonBox.add(upKey);
buttonBox.add(downKey);
buttonBox.add(leftKey);
buttonBox.add(rigthKey);
buttonBox.add(shoot);

return buttonBox;
}

最佳答案

如果您想根据 KeyPressed 事件使用react,那么您应该考虑将逻辑放在 KeyListener 方法中。换句话说,不是将最后按下的键保存在 keyPressed 变量中,而是保存每次触发 ActionListener 时设置的 buttonPressed 变量。当按下一个键时,检查最后按下的是哪个按钮并做出相应的 react 。如果您希望仅在按住按钮时使用react(按下并且在释放之前而不是在释放之后 - 当 ActionListener 被触发时),那么在 KeyListener 中您可以通过检查按下按钮来评估按下了哪个按钮它是模型(例如 if ( myButton.getModel().isPressed() )

关于JButton 选择/ActionPerformed 的 Java Swing 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29593636/

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