在以下示例中:
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("");
答案 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("");