【问题标题】:Pressing JButton instead of keyboard按 JButton 而不是键盘
【发布时间】:2015-12-25 17:26:47
【问题描述】:

我正在开发一个使用 Java 和 ImageJ 的项目。 我在使以下内容正常工作时遇到了一个小问题:

我有一个 JButton t。当我点击 t 时,它应该和我只是在键盘上按“T”一样。 原因是(对于那些熟悉 ImageJ 的人)当您在 ImageJ 中拖出 ROI 并按下键盘上的“T”按钮时,它会打开区域管理器并将新拖出的 ROI 添加到管理器中。 因此,与其对它进行编码,当我点击 t 时,它会将 ROI 添加到区域管理器(这对我来说有点太复杂了),t 按钮应该以某种方式执行为我按下“T”的键盘事件,当我点击 t JButton 时。

【问题讨论】:

  • 把我算在那些仍然感到困惑的人中,所以如果你不能很快得到一个像样的答案,考虑澄清你的问题并显示代码。请查看how to ask a good question 以获得好的建议。此外,您可能希望摆脱"Please don't make your coding too complex..." 行。 1)这个站点是用来回答问题的,不是用来获取代码的,2)这个站点是由志愿者组成的,所以你不想限制你可能得到的任何答案。如果有什么让您在答案或 cmets 方面感到困惑,请询问。
  • “请不要让你的编码太复杂..” 请提问。如需尽快获得更好的帮助,请发帖 minimal reproducible exampleShort, Self Contained, Correct Example

标签: java events key jbutton imagej


【解决方案1】:

不知道 ImageJ 是什么,但由于您使用的是JButton,我猜它是基于Swing。在 Swing 中,您将为此使用 Key Bindings。那就是您创建一个Action,当您单击按钮或使用键盘时可以使用该Action

从行动开始:

Action tAction = new AbstractAction()
{
    @Override
    public void actionPerford(ActionEvent e)
    {
        // do something
    }
}

使用 JButton:

JButton button = new JButton( tAction );
button.setText("some action");

使用键绑定:

button.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("T"), "tAction");
button.getActionMap().put("tAction", tAction);

【讨论】:

  • 谢谢,但这不起作用。我必须把它放在不同的班级吗?因为当我实现了动作,然后我实现了键绑定,键绑定如何知道他们必须执行代码,那是写在他们上面的?对不起我的英语不好
  • @MaxRoth, how will the keybings know that they have to perform a code, - 因为您使用 InputMap/ActionMap 将 KeyStroke 绑定到 Action。在上面的示例中,tAction 绑定到 T KeyStroke
  • when I click on the Button that it´s like I pressed the "T" on my keyboard. - 查看stackoverflow.com/questions/23375276/… 获取完整示例。
猜你喜欢
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多