繁体   English   中英

关注一个JTextField并执行与之相关的操作

[英]Have Focus on one JTextField and perform an action related to it

我的应用程序有两个JTextField和一个JButton。

我想要一个代码片段

  • 如果第一个TextField被聚焦/选中,则按钮会将其TextField(使用setText方法)设置为1,
  • 如果第二个TextField被聚焦/选中,则按钮会将其TextField(使用setText方法)设置为1

编辑: 我想做的事情 (numInput,denInput都是JTextFields)

public void actionPerformed(ActionEvent e) {
        String s = e.getActionCommand();                            
        if (numInput.isFocusOwner()) {
            if (s.equals("1")) {
                if (z == 0) {
                    numInput.setText(numInput.getText() + "1");
                } else {
                    numInput.setText("");
                    numInput.setText(numInput.getText() + "1");
                    z = 0;
                }
        }
        else if (denInput.isFocusOwner()) {
            if (s.equals("1")) {
                if (z == 0) {
                    denInput.setText(numInput.getText() + "1");
                } else {
                    denInput.setText("");
                    denInput.setText(numInput.getText() + "1");
                    z = 0;
                }
        }
}

这对我永远不起作用。

创建一个扩展TextActionAction并将该Action添加到您的按钮。

TextAction具有getFocusedComponent()方法,该方法将返回具有焦点的最后一个文本组件。

该操作的基本代码为:

TextAction action = new TextAction("")
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
            JTextComponent textField = getFocusedComponent();
            System.out.println( textField.getText() );
    }
};

仅当表单上只有两个文本字段时,这才起作用。 如果您有两个以上,则在单击按钮之前,需要添加额外的代码来验证焦点是否在两个文本字段中的任何一个上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM