Java 在applet中添加键盘快捷键

Java 在applet中添加键盘快捷键,java,applet,Java,Applet,如何将键盘快捷键添加到Java小程序 我有一个任务(我正在攻读计算机科学荣誉)让我的名字在一个圆圈里旋转。 我使用了一个无限循环,每次我想结束时,我都要去任务管理器结束程序。我可以添加退出小程序的快捷方式吗 例如,如果我按下空格键,它将更改为程序的另一部分 我查看了Oracle的网站,但我无法理解它。如果您使用的是Swing(如果您正在创建JApplet),那么是的,键绑定是一种方法。他们怎么会让你困惑 顺便说一下,我知道这与您的问题没有直接关系,但是如果您的小程序是Swing JApplet,

如何将键盘快捷键添加到Java小程序

我有一个任务(我正在攻读计算机科学荣誉)让我的名字在一个圆圈里旋转。 我使用了一个无限循环,每次我想结束时,我都要去任务管理器结束程序。我可以添加退出小程序的快捷方式吗

例如,如果我按下空格键,它将更改为程序的另一部分

我查看了Oracle的网站,但我无法理解它。

如果您使用的是Swing(如果您正在创建JApplet),那么是的,键绑定是一种方法。他们怎么会让你困惑

顺便说一下,我知道这与您的问题没有直接关系,但是如果您的小程序是Swing JApplet,我不会使用无限循环来制作动画,而是使用Swing计时器。如果使用无限循环,则必须注意a)在后台线程中执行无限循环,以及b)在Swing事件调度线程(或EDT)的循环中进行大多数Swing调用,否则可能会冻结主Swing线程。Swing计时器可以为您完成所有这一切,因此使用起来更容易。

如果您正在使用Swing(如果您正在创建JApplet),那么是的,键绑定是一种方法。他们怎么会让你困惑


顺便说一下,我知道这与您的问题没有直接关系,但是如果您的小程序是Swing JApplet,我不会使用无限循环来制作动画,而是使用Swing计时器。如果使用无限循环,则必须注意a)在后台线程中执行无限循环,以及b)在Swing事件调度线程(或EDT)的循环中进行大多数Swing调用,否则可能会冻结主Swing线程。Swing Timer可以为您完成所有这些,因此使用起来更容易。

该教程的全部内容是,您需要一个
击键
、一些key
对象
,以及一个
操作
来创建键绑定

要创建您的
击键
,请查看静态设置,它们应该解释如何获得所需的正确的
击键

您可以使用任何旧的
对象
作为键(
对象键=新对象()

您最不需要的是创建
操作
。我建议进行扩展,因为它已经为您实现了许多方法

要将密钥绑定在一起,请执行以下操作:

JComponent c = ...
KeyStroke keyStroke = ...
Object key = ...
Action a = ...

c.getInputMap().put(keyStroke, key);
c.getActionMap().put(key, a);

该教程的全部内容是,您需要一个
击键
、一些键
对象
、以及一个
操作
来创建键绑定

要创建您的
击键
,请查看静态设置,它们应该解释如何获得所需的正确的
击键

您可以使用任何旧的
对象
作为键(
对象键=新对象()

您最不需要的是创建
操作
。我建议进行扩展,因为它已经为您实现了许多方法

要将密钥绑定在一起,请执行以下操作:

JComponent c = ...
KeyStroke keyStroke = ...
Object key = ...
Action a = ...

c.getInputMap().put(keyStroke, key);
c.getActionMap().put(key, a);

看一下答案,你应该考虑使用Swing定时器。一个常见的混淆点是使用<代码> GETINPUPMAP(INT条件) ORIDLE。有时需要一些实验来使用正确的条件,我认为在原始海报的情况下可能是
JComponent。本教程对此进行了大量解释。1 +投票。@ HoVrFrAcFulfFoelsOOP,忘了提这个。看看答案,你应该考虑使用Swing定时器。一个常见的混乱点是使用<代码> GETINPUPMAP(INT条件) ORIDLE。有时需要一些实验来使用正确的条件,我认为在原始海报的情况下可能是
JComponent。本教程对此进行了大量解释。1+投票。@HovercraftFullOfEels-Oops,忘了提那个。“我必须去任务管理器结束程序。我可以添加一个退出小程序的快捷方式吗?”在它的北面放置一个切换按钮,用于停止/启动。顺便说一句-几乎所有可以在应用程序中完成的事情。可以在小程序中完成,但由于焦点的原因,这种情况有点棘手(小程序可能没有输入焦点,并且可能被标记为不可焦点)。“我必须转到任务管理器并结束程序。我可以添加一个退出小程序的快捷方式吗?”在小程序的北面放置一个切换按钮,用于停止/启动。顺便说一句-几乎所有可以在应用程序中完成的事情。可以在小程序中完成,但由于焦点的原因,这种情况有点棘手(小程序可能没有输入焦点,并且可能被标记为不可焦点)。很抱歉回复太晚。我不明白如何将密钥绑定添加到程序中。你能给我一个例子,说明我需要在编码中添加什么才能获得密钥绑定吗?@the_pwner224:Google获取密钥绑定教程,因为它将向你展示你需要知道的所有内容。如果你被卡住了,那就回来。@the_pwner224:edit:我现在记得你已经有了链接,但你所说的只是你不明白,但没有给出细节。如果没有具体问题,除了建议您重新阅读本教程之外,我们无法为您提供帮助。考虑一个更具体的问题。我知道必须有一个输入映射和一个动作,但是我不明白我要添加到程序中以使它工作。例如,这是我的程序:。我知道我必须添加
component.getInputMap().put(KeyStroke.getKeyStroke(“空格”),“doSomething”)
组件.getActionMap().put(“doSomething”,anaAction)
检测何时按下空格,然后运行'anAction',但我如何创建一个运行'stop'方法(在我的程序底部)的操作?@the_pwner:您的代码对我来说不可编译或运行。考虑在论坛中创建和张贴。另外,在您的小型可运行sscce中,显示您尝试使用密钥绑定的代码