更改焦点JTextField的文本

时间:2016-05-29 01:44:31

标签: java swing jtextfield

在以下示例中:

JTextField name = new JTextField("Enter Name");
JTextField place = new JTextField("Enter Place of birth");
JTextField a = new JTextField("Enter a");
JTextField b = new JTextField("Enter b");
JTextField c = new JTextField("Enter c");


FocusListener f = new FocusListener() {
  public void focusGained(FocusEvent e) {

  }

  public void focusLost(FocusEvent e) {

  }

name.addfocuslistener(f);
place.addfocuslistener(f);
a.addfocuslistener(f);
b.addfocuslistener(f);
c.addfocuslistener(f);

如何在获得焦点时将JTextfield的文本设置为空字符串?

类似于:

focusedTextField.settext("");

5 个答案:

答案 0 :(得分:1)

首先看看JavaDocs for FocusEvent,它有一些有趣的属性,包括getSource,所有EventObject都有,getComponent返回“返回事件的发起者。”Component,这非常有用。

使用这些知识,你可以做类似......

FocusListener f = new FocusListener() {
  public void focusGained(FocusEvent e) {
      Component source = e.getComponent();
      if (source instanceof JTextField) {
          ((JTextField)source).setText("");
      }
  }

您还应该查看How to Write a Focus Listener了解更多详情

答案 1 :(得分:1)

  

如何在获得焦点时将JTextfield的文本设置为空字符串?

我猜你真的不想在获得焦点时将文本字段设置为空字符串。用户可以在不输入任何文本的情况下标记该字段,因此您将永远丢失提示。

请查看Text Field Prompt以获取可重复使用的类,以便在文本字段中显示提示文字。

该类有几个不同的选项,因此您可以控制何时显示提示。

您甚至可以为文本提供不同的属性,使其看起来更像是提示而非实际文本。

答案 2 :(得分:0)

e.getSource()方法中,您将传递FocusEvent,其中应包含使用JTextField启动事件的对象。如果转换为我们期望源的类型, public void focusGained(FocusEvent e) { ((JTextField)e.getSource()).setText(""); } ,那么我们只需清除文本:

regex = re.compile('sw_apple-mc-stdeb')

我还没有对此进行测试,但这应该可行。

答案 3 :(得分:0)

您需要派生作为FocusEvent目标的swing元素并将其转换为JTextField。

在您的focusGained方法中,您可以使用:

  public void focusGained(FocusEvent e) {
    JTextField target = (JTextField)e.getSource();
    target.setText("TEXT_TO_SET");
    }

答案 4 :(得分:0)

你应该把它设置在focusGained merhod中 JTextField tf =(JTextField)e.getSource(); 如果(!tf.isFocusOwner())tf.setText("");