检查是否选择了JTextfield

时间:2011-11-28 07:46:42

标签: java swing focus jtextfield

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

// EDIT 感谢下面的帮助,这是一个有效的例子

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");
        }
    });
    }
}

4 个答案:

答案 0 :(得分:6)

您可以尝试isFocusOwner()

答案 1 :(得分:6)

您需要使用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
            }
        });

    }
}

答案 2 :(得分:2)

  

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

是的,请使用focusGainedfocusLost个活动。

  

单击了文本字段,光标现在位于字段中?

如果此Component是焦点所有者,请使用isFocusOwner()返回true。

答案 3 :(得分:0)

if( ((JFrame)getTopLevelAncestor()).getFocusOwner() == textField ) {
    ....
}