gpt4 book ai didi

java - 按键和按钮兼容性 Java

转载 作者:行者123 更新时间:2023-12-02 05:51:48 26 4
gpt4 key购买 nike

我用 Java 制作了自己的俄罗斯方 block 版本,并且添加了使用 JButton 和某些键盘按键移动形状的可能性。我使用的代码片段如下:

    leftButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent E) {

moveLeft();

}
});

rightButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent E) {

moveRight();

}
});

rotateButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent E) {


rotateMovingShape();

}

});


myPanel.addKeyListener(new KeyAdapter(){


public void keyPressed(KeyEvent event) {
int keyCode = event.getKeyCode();
if (keyCode == event.VK_A)
{
moveLeft();

}
if (keyCode == event.VK_D)
{
moveRight();
}
if (keyCode == event.VK_S)
{
rotateMovingShape();
}
}



});

我遇到的问题是,在使用 JButtons 后,我无法再使用键盘按键控制形状。我怀疑这与获得/失去焦点有关,但我不确定。谁能告诉我这是怎么回事?

最佳答案

你会遇到这个问题,因为你使用的是KeyListener,而不是你需要使用Key Bindings 。例如:

    component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_A,0), "aPressed");
component.getActionMap().put("aPressed", new AbstractAction() {

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("a key");
}
});
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_D,0), "dPressed");
component.getActionMap().put("dPressed", new AbstractAction() {

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("d key");
}
});
// other bindings

其中组件是您的JPanel

关于java - 按键和按钮兼容性 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23467239/

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