如何在单击输入键盘输出时选择文本框
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 中的单击输入框中选择文本? [复制]