如何在单击输入键盘输出时选择文本框

Posted

技术标签:

【中文标题】如何在单击输入键盘输出时选择文本框【英文标题】:How to Select a Textbox on Click to Input Keypads Output 【发布时间】:2016-04-28 17:45:03 【问题描述】:

界面

上图显示了我正在尝试实现的界面。登录面板和键盘面板需要以某种方式协同工作,所以每当我点击选定的文本框时,我都可以使用键盘输入所需的输入。

在正确输入详细信息后,登录面板将更改为带有其他文本框的另一个面板,因此键盘也必须使用这些文本框。

有什么想法吗?提前谢谢!

【问题讨论】:

所以您想知道如何在您的应用程序中实现键盘 (1-) 什么是文本框?没有同名的 Swing 类。在我看来,您使用的是 JTextField。因此,在提出问题时要具体! 是的,对不起,第一次使用这个;/我仍然是 java 的初学者。是 JTextField 【参考方案1】:

您可以扩展TextAction 以创建一个Action 以供每个按钮共享。 TextAction 允许您访问最后一个焦点文本组件:

Action numberAction = new TextAction()

    @Override
    public void actionPerformed(ActionEvent e)
    
        JTextComponent input = getFocusedComponent();
        input.replaceSelection(e.getActionCommand());
    
;

JButton button1 = new JButton("1");
button1.addActionListener( numberAction );
JButton button2 = new JButton("2");
button2.addActionListener( numberAction );
...

您需要为“清除”按钮创建一个单独的操作。

【讨论】:

【参考方案2】:

实现 IMO 的最佳方式是在所有 JButton 上使用 setFocusable(false),因此只有两个输入字段可以成为焦点所有者。您还应该为这两个 TextField 设置一个 FocusListener,这样您就可以知道用户是否单击了该数字所在的按钮

【讨论】:

【参考方案3】:

嗯。您可以有一个 JTextField 来跟踪当前选定的文本框,然后将 FocusListeners 添加到您的 JTextFields 以在获得或丢失 foxus 时更新当前选定的文本框。

类似这样的:

JTextField currentText;
final JTextField textField = new JTextField("Ayy");
textField.addFocusListener(new FocusListener() 

    @Override
    public void focusGained(FocusEvent e) 
        //Your code here
        currentText = textField;
    

    @Override
    public void focusLost(FocusEvent e) 
        //Your code here
        currentText = null;
    
);

【讨论】:

以上是关于如何在单击输入键盘输出时选择文本框的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中的单击输入框中选择文本? [复制]

点击/单击选择输入/文本框字段的内容

chemdraw保存自定义符号

禁用输入,允许点击文本框

设计一个程序,在文本框中输入一个3位整数,单击按钮后,在标签上输出该数的百位数、十位数和个位数

为啥在 tabcontrol 内的 WPF 文本框中单击时,Windows 10 键盘会出现并立即消失?