【问题标题】:Checking if a JTextfield is selected or not检查是否选择了 JTextfield
【发布时间】:2012-01-07 17:32:30
【问题描述】:

是否可以检查一个 jtextfield 是否已被选择/取消选择(即文本字段已被单击并且光标现在在该字段内)?

//编辑 感谢下面的帮助,这里是一个工作示例

import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class test extends JFrame {

private static JPanel panel = new JPanel();
private static JTextField textField = new JTextField(20);
private static JTextField textField2 = new JTextField(20);

public test() {
    panel.add(textField);
    panel.add(textField2);
    this.add(panel);
}

public static void main(String args[]) {

    test frame = new test();
    frame.setVisible(true);
    frame.setSize(500, 300);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    textField.addFocusListener(new FocusListener() {

        @Override
        public void focusGained(FocusEvent e) {
            System.out.println("selected");
        }

        @Override
        public void focusLost(FocusEvent e) {
            System.out.println("de-selected");
        }
    });
    }
}

【问题讨论】:

  • 请学习java命名约定并遵守它们

标签: java swing focus jtextfield


【解决方案1】:
if( ((JFrame)getTopLevelAncestor()).getFocusOwner() == textField ) {
    ....
}

【讨论】:

    【解决方案2】:

    是否可以检查是否已选择/取消选择 jtextfield

    是的,使用 focusGainedfocusLost 事件。

    文本字段已被点击,光标现在在字段内?

    使用isFocusOwner(),如果此组件是焦点所有者,则返回true。

    【讨论】:

      【解决方案3】:

      您将需要使用focusGainedfocusLost 事件来查看它何时被选中,何时被取消选择(即获得/失去焦点)。

      import java.awt.event.FocusEvent;
      import java.awt.event.FocusListener;
      
      import javax.swing.JTextField;
      
      public class Main {
      
          public static void main(String args[]) {
              final JTextField textField = new JTextField();
              textField.addFocusListener(new FocusListener() {
      
                  @Override
                  public void focusGained(FocusEvent e) {
                      //Your code here
                  }
      
                  @Override
                  public void focusLost(FocusEvent e) {
                      //Your code here
                  }
              });
      
          }
      }
      

      【讨论】:

      • 感谢您的代码,我在上面创建了一个工作示例。
      【解决方案4】:

      你可以试试isFocusOwner()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-28
        • 2012-12-28
        • 2021-07-10
        • 1970-01-01
        • 1970-01-01
        • 2012-09-13
        • 1970-01-01
        相关资源
        最近更新 更多