【发布时间】:2018-12-28 12:14:51
【问题描述】:
我在 Netbeans 中使用 JFrame Form 来制作一个简单的钢琴游戏,我希望能够使用计算机键盘按键来控制 JButtons。当我想在设计选项中使用ActionPerformed 方法和keypressed 时,它只能让我控制之前用鼠标单击的按钮。其他按钮没有反应。
我试图通过让keypressed 自己编写来解决它,但在这种情况下,当我按下键盘键时没有任何反应。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String soundName = "C.wav";
AudioInputStream audioInputStream = null;
try {
audioInputStream = AudioSystem.getAudioInputStream(new
File(soundName).getAbsoluteFile());
} catch (UnsupportedAudioFileException | IOException ex) {
Logger.getLogger(GameWindow.class.getName()).log(Level.SEVERE, null, ex);
}
Clip clip = null;
try {
clip = AudioSystem.getClip();
} catch (LineUnavailableException ex) {
Logger.getLogger(GameWindow.class.getName()).log(Level.SEVERE, null, ex);
}
try {
clip.open(audioInputStream);
} catch (LineUnavailableException | IOException ex) {
Logger.getLogger(GameWindow.class.getName()).log(Level.SEVERE, null, ex);
}
clip.start();
}
public void keyPressed(KeyEvent evt){
int keyCode = evt.getKeyCode();
if (keyCode == KeyEvent.VK_Z) {
jButton1.getModel().isPressed();
}
if (keyCode == KeyEvent.VK_S) {
jButton2.getModel().isPressed();
}
}
【问题讨论】:
-
尝试通过调用JFrame实例的addKeyListener方法注册一个
KeyListener
标签: java swing jframe jbutton piano