清除按钮按下时的文本字段-Java小程序

清除按钮按下时的文本字段-Java小程序,java,applet,Java,Applet,我有一个用于登录表单的Java小程序。它有两个文本字段、用户名和密码。我需要在单击Reset按钮时清除它们。这是我写的代码 public class LoginForm extends Applet implements ActionListener { TextField name, pass, hidden; Button b1, b2; public void init() { name = new TextField(20);

我有一个用于登录表单的Java小程序。它有两个
文本字段
、用户名和密码。我需要在单击
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(" ");

然后它就起作用了。但我不想在那里有空位。我希望文本字段为空


非常感谢您的帮助。

这可能不是一个好的解决方案,但这是一个解决方法。在设置文本调用
getText
方法之前,它将重置。真奇怪!此行为被标记为此服务器上的错误

另一个解决方案是将文本设置为空格。但如果您有类似密码的字段,这些字段具有
setEchoChar('*')
,则不会


只需在文本字段中输入空白

public void actionPerformed(ActionEvent e) {
    name.getText();
    pass.getText();
    name.setText("");
    pass.setText("");
    repaint();
    revalidate();
}

停止使用小程序。浏览器已经停止支持它们很多年了当然,我知道。这是学校的作业,请把老师交给我。注意:我是在2013年写这篇博客的,在Oracle最终决定弃用并删除用于启动小程序的整个Java插件之前。另外,为什么要使用AWT?有关放弃AWT组件而支持Swing的许多好理由,请参阅。Swing在小程序出现问题之前很久就取代了AWT。@AndrewThompson感谢您的评论。事实上,我是老师。我很清楚小程序已经成为历史。但不幸的是,我没有设定教学大纲,伙计(好吧,这完全出乎意料!不过它是有效的。如果你能告诉我这种行为的原因,我会接受答案。不能这样做,
pass.setText(“”;
),因为如果我有
pass.setEchoChar(“*”),密码字段中会显示一个
*
)
on.。在本页上它被标记为BUG。请检查它。我无法告诉您原因是什么。我认为您应该在答案中包含BUG链接。@linuxartisan我有。这与上一个答案完全相同。
public void actionPerformed(ActionEvent e) {
    System.out.println(e);

    name.setText(" ");
    pass.setText(" ");

    repaint();
    revalidate();
}
public void actionPerformed(ActionEvent e) {
    name.getText();
    pass.getText();
    name.setText("");
    pass.setText("");
    repaint();
    revalidate();
}