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

界面

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

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

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

【问题讨论】:

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

标签: java swing textbox actionlistener keypad


【解决方案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;
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2012-04-28
        • 2013-12-05
        • 2019-06-30
        • 2015-02-23
        • 2020-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-13
        相关资源
        最近更新 更多