Java 使用setText清除TextField的内容在AWT中不起作用
我在使用Java 使用setText清除TextField的内容在AWT中不起作用,java,awt,Java,Awt,我在使用setText()方法清除AWT中TextField的内容时遇到问题。显然,按下“重置”按钮时,setText(“”没有清除TextField的内容。以下是我的节目: import java.awt.*; import java.awt.event.*; public class form extends Frame { Label lbl = new Label("Name:"); TextField tf = new TextField(); Button
setText()
方法清除AWT中TextField
的内容时遇到问题。显然,按下“重置”按钮时,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();
}
}
有人能告诉我哪里出了问题,或者提出一个替代方案吗?谢谢。使用Java 8u11,我也看到了这个问题。我似乎记得这是一个已知的bug,但我现在似乎找不到它 一个对我有效的解决方案是添加一个中间步骤:
public void actionPerformed(ActionEvent e) {
tf.setText(" ");
tf.setText("");
}
我不确定为什么需要这样做,我认为这是setText()函数专门忽略空字符串的一个错误。如果有人发现了已归档的bug,将会有更多的信息。在函数的setText(“”)中添加空格,看看它是否有效。但之后会有一个空间。对我来说是个例外。键入一些东西单击重置,字段为空。我也看到了问题。您使用的是什么版本的Java?我似乎记得这是一个已知的错误,让我看看我是否能发现…我同时使用Java 7 update 65和Java 8 update 11,问题似乎仍然存在于两者中为什么使用AWT组件而不是Swing?有关放弃AWT的许多好理由,请参阅。@AndrewThompson,谢谢链接。我应该只使用AWT创建一个表单应用程序作为我的需求,因此组件。谢谢。这个快速修复程序有效。如果你发现关于这个错误的任何信息,请在这里发布链接。这与4年前发布的公认答案有什么不同?尤其是“看看它是否有效”?OP已经确认它有效。