按下按钮时清除 TextField - Java Applet
Clear TextField on button press - Java Applet
我有一个 Java 小程序用于登录表单。它有 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")。
但是 TextFields 没有被清除。
如果我在 actionPerformed
中进行以下更改
name.setText(" "); // please note the spaces
pass.setText(" ");
然后就可以了。但我不希望那里有空格。我希望 TextFields 变为空白。
感谢任何帮助。
可能这不是好的解决方案,但这是一个 workaround.Before 设置文本调用 getText
方法,它将重置。很奇怪!此行为在 page
上被标记为 Bug
public void actionPerformed(ActionEvent e) {
System.out.println(e);
name.getText();
pass.getText();
name.setText("");
pass.setText("");
repaint();
revalidate();
}
另一种解决方案是使用 space 设置文本。但如果你有类似密码的字段,其中有 setEchoChar('*')
.
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();
}
我有一个 Java 小程序用于登录表单。它有 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")。
但是 TextFields 没有被清除。
如果我在 actionPerformed
name.setText(" "); // please note the spaces
pass.setText(" ");
然后就可以了。但我不希望那里有空格。我希望 TextFields 变为空白。
感谢任何帮助。
可能这不是好的解决方案,但这是一个 workaround.Before 设置文本调用 getText
方法,它将重置。很奇怪!此行为在 page
public void actionPerformed(ActionEvent e) {
System.out.println(e);
name.getText();
pass.getText();
name.setText("");
pass.setText("");
repaint();
revalidate();
}
另一种解决方案是使用 space 设置文本。但如果你有类似密码的字段,其中有 setEchoChar('*')
.
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();
}