更改聚焦的 JTextField 的文本
Change the text of a focused 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("");
在 focusGained()
方法中,系统向您传递了一个 FocusEvent,其中应包含使用 e.getSource()
启动事件的对象。如果转换为我们期望源的类型,JTextField
,那么要清除文本,我们只需执行:
public void focusGained(FocusEvent e) {
((JTextField)e.getSource()).setText("");
}
我还没有测试过,但应该可以。
您需要导出作为 FocusEvent 目标的 swing 元素并将其转换为 JTextField。
在您的 focusGained 方法中,您可以使用:
public void focusGained(FocusEvent e) {
JTextField target = (JTextField)e.getSource();
target.setText("TEXT_TO_SET");
}
首先看一下 JavaDocs for FocusEvent
,它有许多有趣的属性,包括 getSource
,所有 EventObject
都有,getComponent
returns"Returns the originator of the event."作为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 了解更多详情
How can i set the text of the JTextfield to an empty string when focus is gained?
我猜您并不想在获得焦点时将文本字段设置为空字符串。用户可以在不输入任何文本的情况下关闭该字段,因此您将永远失去提示。
查看 Text Field Prompt 可重复使用的 class,它将允许您在文本字段中显示提示文本。
class 有几个不同的选项,因此您可以控制何时显示提示。
您甚至可以为文本赋予不同的属性,使其看起来更像是提示而不是实际文本。
你应该在focusGained merhod中设置这个
JTextField tf = (JTextField)e.getSource();
如果(!tf.isFocusOwner()) tf.setText("");
在下面的例子中:
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("");
在 focusGained()
方法中,系统向您传递了一个 FocusEvent,其中应包含使用 e.getSource()
启动事件的对象。如果转换为我们期望源的类型,JTextField
,那么要清除文本,我们只需执行:
public void focusGained(FocusEvent e) {
((JTextField)e.getSource()).setText("");
}
我还没有测试过,但应该可以。
您需要导出作为 FocusEvent 目标的 swing 元素并将其转换为 JTextField。
在您的 focusGained 方法中,您可以使用:
public void focusGained(FocusEvent e) {
JTextField target = (JTextField)e.getSource();
target.setText("TEXT_TO_SET");
}
首先看一下 JavaDocs for FocusEvent
,它有许多有趣的属性,包括 getSource
,所有 EventObject
都有,getComponent
returns"Returns the originator of the event."作为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 了解更多详情
How can i set the text of the JTextfield to an empty string when focus is gained?
我猜您并不想在获得焦点时将文本字段设置为空字符串。用户可以在不输入任何文本的情况下关闭该字段,因此您将永远失去提示。
查看 Text Field Prompt 可重复使用的 class,它将允许您在文本字段中显示提示文本。
class 有几个不同的选项,因此您可以控制何时显示提示。
您甚至可以为文本赋予不同的属性,使其看起来更像是提示而不是实际文本。
你应该在focusGained merhod中设置这个 JTextField tf = (JTextField)e.getSource(); 如果(!tf.isFocusOwner()) tf.setText("");