我有一个用于登录表单的Java Applet。它具有2个TextFields
,用户名和密码。我需要点击Reset
按钮来清除它们。这是我编写的代码。
public class LoginForm extends Applet implements ActionListener
{
TextField name, pass, hidden;
Button b1, b2;
public void init()
{
name = new TextField(20);
pass = new TextField(20);
b2 = new Button("Reset");
add(name);
add(pass);
add(b2);
b2.addActionListener(this);
}
public void paint(Graphics g)
{
g.drawString("Hello", 10, 150);
}
public void actionPerformed(ActionEvent e) {
System.out.println(e);
name.setText("");
pass.setText("");
repaint();
}
}
但这不能正常工作。
一旦我单击Reset
按钮,就会调用actionPerformed()
方法,它也会调用repaint()
。 (我可以看到正在显示“ Hello”。)
但是不会清除文本字段。
如果我在actionPerformed
中进行了以下更改
name.setText(" "); // please note the spaces
pass.setText(" ");
然后它起作用。但我不要在那里放空。我希望TextFields为空。
感谢您的帮助。
答案 0 :(得分:0)
可能不是很好的解决方案,但这是一种解决方法。在设置文本调用getText
方法之前,它将重置。真奇怪!此行为在此page
public void actionPerformed(ActionEvent e) {
System.out.println(e);
name.getText();
pass.getText();
name.setText("");
pass.setText("");
repaint();
revalidate();
}
另一种解决方案是使用空格设置文本。但是如果您的密码类似字段包含setEchoChar('*')
,则不会。
public void actionPerformed(ActionEvent e) {
System.out.println(e);
name.setText(" ");
pass.setText(" ");
repaint();
revalidate();
}
答案 1 :(得分:0)
只需在文本字段中留空即可。
public void actionPerformed(ActionEvent e) {
name.getText();
pass.getText();
name.setText("");
pass.setText("");
repaint();
revalidate();
}