【问题标题】:Clearing contents of TextField using setText does not work in AWT使用 setText 清除 TextField 的内容在 AWT 中不起作用
【发布时间】:2014-08-18 17:52:03
【问题描述】:

我在使用 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?我似乎记得看到这是一个已知的错误,让我看看我能不能找到...
  • 我同时使用 Java 7 update 65 和 Java 8 update 11,但问题似乎都存在
  • 为什么使用 AWT 组件而不是 Swing?请参阅 this answer 了解放弃 AWT 的许多充分理由。
  • @AndrewThompson,感谢您的链接。我应该仅将 AWT 用于创建表单应用程序作为我的要求以及组件。

标签: java awt


【解决方案1】:

我也看到了使用 Java 8u11 的问题。我似乎记得这是作为一个已知错误提交的,但我现在似乎找不到它。

一个适合我的解决方案是添加一个中间步骤:

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

我不确定为什么这是必要的,我认为这是 setText() 函数专门忽略空字符串的错误。如果有人发现提交的错误,那里会有更多信息。

【讨论】:

  • 谢谢。此快速修复有效。如果您发现有关此错误的任何信息,请在此处发布链接。
【解决方案2】:

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

【讨论】:

  • 这与 4 年前发布的公认答案有何不同?特别是“看看它是否有效”? OP 已经确认它有效。
猜你喜欢
  • 2015-10-30
  • 2018-11-14
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多