当用户输入数据/删除文本时,显示/消除TextField中的默认文本

时间:2013-08-07 12:49:08

标签: java swing focus textfield focuslistener

我正在尝试制作注册表单,我想要做的是在文本字段中显示默认文本,简单的含义如下图所示。  我想要做的是,在用户输入数据到一个字段之前,有一个名为“First Name”的字段。当用户选择字段“名字”时,文本消失,用户可以键入其名字。 如果用户没有输入任何内容,则文本应再次显示在文本字段中。

我尝试使用焦点监听器,但我无法真正开始工作,因为使用我的方法即使用户将数据输入到字段并转到下一个字段,前一个字段的文本也会被删除,并且显示默认文本。

以下是我所做的: -

txtFirstName.addFocusListener(new FocusListener() {
    public void focusGained(FocusEvent e) {
        txtFirstName.setText("");
    }

    public void focusLost(FocusEvent e) {
        txtFirstName.setText("First Name");
    }
});

What i am trying to do

感谢您的时间。

2 个答案:

答案 0 :(得分:3)

  

我要做的是,直到用户将数据输入到字段中   例如,有一个名为“名字”的字段。当用户选择时   字段“名字”文本消失,用户可以键入它们   名字。如果用户没有输入任何内容,则应显示文本   再次在文本字段中。

我认为您正在寻找提示,请参阅

答案 1 :(得分:2)

您必须为focusLostfocusGained侦听器实施IF子句。所以做这样的事情:

public void focusLost(FocusEvent e) {
        if(txtFirstName.getText().trim().equals(""))
           txtFirstName.setText("First Name");
        else
           //do nothing
    }

对于focusGained()

public void focusGained(FocusEvent e) {
        if(txtFirstName.getText().trim().equals("First name"))
           txtFirstName.setText("");
        else
           //do nothing
    }

或类似的东西;)