Очистка содержимого TextField с использованием setText не работает в AWT
У меня проблемы с очисткой содержимого TextField
в AWT используя setText()
метод. По-видимому, setText("")
не очищает содержимое TextField
при нажатии кнопки "Сброс". Вот моя программа:
import java.awt.*;
import java.awt.event.*;
public class form extends Frame
{
Label lbl = new Label("Name:");
TextField tf = new TextField();
Button btn = new Button("Reset");
public form()
{
tf.setColumns(20);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
btn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
tf.setText(""); //Problem occurs here. This does not clear the contents of the text field on pressing the 'Reset' button.
}
});
add(lbl);
add(tf);
add(btn);
setLayout(new FlowLayout());
setSize(400,100);
setVisible(true);
setTitle("Form");
}
public static void main(String[] args)
{
new form();
}
}
Может кто-нибудь сказать мне, где я ошибся, или предложить альтернативу? Благодарю.
2 ответа
Я также вижу проблему с использованием Java 8u11. Кажется, я помню, что это было зарегистрировано как известная ошибка, но сейчас я не могу ее найти.
Решение, которое работает для меня, это добавить промежуточный шаг:
public void actionPerformed(ActionEvent e) {
tf.setText(" ");
tf.setText("");
}
Я не уверен, почему это необходимо, я думаю, что это ошибка с функцией setText(), специально игнорирующей пустые строки. Если кто-то найдет зарегистрированную ошибку, там будет больше информации.
Добавьте пробел в setText(" ") в функции и посмотрите, работает ли он. Но там после будет один пробел.