JButton 选择/ActionPerformed 的 Java Swing 问题

标签 java swing jbutton

我目前正在开发一个迷宫游戏,我有一个用户可以更改控件的设置,为了做到这一点,每个游戏控件(移动等)对应了几个按钮。要更改游戏控制,用户必须单击按钮,然后按下一个键,之后控制键应该已经更新,例如按钮文本,它应该如下所示: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/

相关文章:

java - 嵌入式tomcat作为windows服务运行需要很长时间才能停止服务

java - 为什么我的所有标签在 boderLayout WEST 时都间隔 4 个选项卡?

java - 将图像分配给字符串

java - 使用 javafx 中的超链接事件连接两个 Web View

java - Java中有没有一种方法可以使按钮默认在点击时获得焦点

java - JAVA中按钮VS图像按钮

java - 我如何检查该条目是否已存在于表中或 servlet 中

java - 不使用switch实现Setter和Getter

Java 独立的 ActionListener 和一个总体的 ActionListener

java - WebApplicationInitializer 调用了两次