Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用setText清除TextField的内容在AWT中不起作用_Java_Awt - Fatal编程技术网

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,将会有更多信息。

我也看到了使用Java 8u11时的问题。我似乎记得这是一个已知的bug,但我现在似乎找不到它

一个对我有效的解决方案是添加一个中间步骤:

public void actionPerformed(ActionEvent e) {
   tf.setText(" ");  
   tf.setText("");
}

我不确定为什么需要这样做,我认为这是setText()函数专门忽略空字符串的一个错误。如果有人发现了已归档的bug,将会有更多的信息。

在函数的setText(“”)中添加空格,看看它是否有效。但之后会有一个空格。

在函数中的setText(“”)中添加空格,看看它是否有效。但之后会有一个空间。

对我来说是个例外。键入一些东西单击重置,字段为空。我也看到了问题。您使用的是什么版本的Java?我似乎记得这是一个已知的错误,让我看看我是否能发现…我同时使用Java 7 update 65和Java 8 update 11,问题似乎仍然存在于两者中为什么使用AWT组件而不是Swing?有关放弃AWT的许多好理由,请参阅。@AndrewThompson,谢谢链接。我应该只使用AWT创建一个表单应用程序作为我的需求,因此components.Works对我来说是例外。键入一些东西单击重置,字段为空。我也看到了问题。您使用的是什么版本的Java?我似乎记得这是一个已知的错误,让我看看我是否能发现…我同时使用Java 7 update 65和Java 8 update 11,问题似乎仍然存在于两者中为什么使用AWT组件而不是Swing?有关放弃AWT的许多好理由,请参阅。@AndrewThompson,谢谢链接。我应该只使用AWT创建一个表单应用程序作为我的需求,因此组件。谢谢。这个快速修复程序有效。如果你发现这个错误的任何信息,请在这里发布链接。谢谢。这个快速修复程序有效。如果你发现关于这个错误的任何信息,请在这里发布链接。这与4年前发布的公认答案有什么不同?尤其是“看看它是否有效”?OP已经证实了它的有效性。这与4年前发布的公认答案有什么不同?尤其是“看看它是否有效”?OP已经确认它有效。