gpt4 book ai didi

java - 仅启用 jbutton 上的鼠标事件 - 禁用 jbutton 的键盘事件

转载 作者:行者123 更新时间:2023-12-01 17:23:32 25 4
gpt4 key购买 nike

我有一个问题。我创建了一个游戏。当我打开它时,我必须按 ENTER 才能开始游戏(只需输入)。现在我用一个名为“退出游戏”的按钮升级了游戏。我不知道为什么我的回车键因为这个按钮而不再起作用。如果我删除它,那么我可以再次按 Enter 并玩游戏。

我必须仅将单击按下事件设置为该按钮或类似的事件?请帮助我。

public class LeftPanel extends JPanel implements ActionListener {
JButton ExitGame;

public LeftPanel(Tetris tetris) {
this.tetris = tetris;
setPreferredSize(new Dimension(400, 480));
setBackground(Color.getHSBColor(17f, 0.87f, 0.52f));
add(new JButton("Exit Game"));
{
ExitGame.addActionListener(this);
}
}

public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}

最佳答案

问题 1 - JButton 是 UI 中唯一可聚焦的组件。因此,当您启动程序时,它会获得默认焦点。虽然它有默认焦点。它将消耗 Enter 击键。

问题 2 - JPanel 不可聚焦,这意味着它永远无法接收键盘焦点。根据您的描述,我假设您正在使用 KeyListener,这会导致

问题 3 - 使用 KeyListener...KeyListener 仅当其注册的组件可聚焦且具有焦点时才会响应按键事件。您可以使用 Key Bindings 来解决这个问题.

...解决方案...

  • 使用JLabel而不是JButton。这将要求您向标签注册一个 MouseListener 以便接收鼠标单击的通知,但它不会响应按键事件...
  • 更好的是,还添加一个“开始”按钮...

关于java - 仅启用 jbutton 上的鼠标事件 - 禁用 jbutton 的键盘事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16803851/

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