java - 无法使用 WindowBuilder SWING UI 设置键盘输入焦点

标签 java eclipse swing keyboard-events windowbuilder

我使用 Eclise neon 和 Java 1.8 中的 WindowsBuilder 编写了一个基本的计算器类型程序。它已经非常完整了,一切都按照我想要的方式进行。除了键盘输入。

作为最后的润色,我想检测 keyTyped 事件并将它们映射到按钮按下,以便用户可以使用键盘进行输入,而不是用鼠标单击按钮。

我已将“implements KeyListener”添加到程序类中...

public class CashRegister implements KeyListener {
    private JTextField keyb;

我尝试为名为 keyb 的不可见 JTextField 设置监听器...

private void initialize() {
    keyb = new JTextField(20);
    keyb.addKeyListener(this);
    keyb.setFocusable(true);
    keyb.requestFocusInWindow();

并且我添加了处理捕获的按键的方法...

public void keyTyped (KeyEvent e) {
    String out = "";
    out = out + e.getKeyChar();
    pence1text.setText(out);
}
public  void keyPressed (KeyEvent e) {

}
public  void keyReleased (KeyEvent e) {

}

所以,在这个阶段,我所期望的,证明它正在工作,就是我按下的出现在名为“pence1text”的文本字段中的关键字符。但是,它不起作用,当我按 a 键时,什么也没有显示。

我认为这可能是焦点问题。谷歌搜索并检查 stackoverlow 导致我添加以下几行...

    keyb.setFocusable(true);
    keyb.requestFocusInWindow();

如上所述,但仍然没有运气。

有谁知道我做错了什么,或者我下一步可以尝试什么?

谢谢

最佳答案

感谢用户 Andrew Thompson 指示我返回文档并重新阅读。

问题是 JTextField 不可见,因此无法获得焦点。如果我将监听器添加到可见的文本字段中,则程序可以正常工作。但是,如果用户使用鼠标单击按钮,它就会失去焦点并破坏实现......所以我需要重新考虑代码并继续查看焦点设置。

关于java - 无法使用 WindowBuilder SWING UI 设置键盘输入焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43734586/

相关文章:

java - Android findViewById 工具栏返回 null

java - 添加具有 86,000 个组件的 JPanel

java - 将操作添加到表单页面中的工具栏

java - 无法使用 opennlp 和 java 来训练 location.bin

Android模拟器无法在eclipse上启动

java - 在 Swing 应用程序中集成 Tally

java - Android 致命信号错误 11 SIGSEGV 在不同版本的 JellyBean 上

java - 使用包的 Eclipse 问题

java - 将此 Java Swing 应用程序转变为沙盒可嵌入(小程序或 Web Start)的最佳方法是什么?

java - ActionListener - 向 JButtons 的 ArrayList 添加 Action