如何清除 JTextArea?

Posted

技术标签:

【中文标题】如何清除 JTextArea?【英文标题】:How to clear JTextArea? 【发布时间】:2013-03-25 18:42:01 【问题描述】:

我正在尝试清除 JTextArea。

目前,我正在使用

jtextarea.setText(null);

如果我使用有什么区别

jtextarea.setText("");

【问题讨论】:

jtextarea.setText("") 第一次创建时(我的意思是空字符串)可能会慢一点,因为它被缓存在一个内部哈希集。但这在当今的系统上甚至都无关紧要。空字符串可能 - 在某些时候 - 更具可读性。 有这样的问题,大家可以去查一下setText()的源码,自己看看有什么区别。 【参考方案1】:

没有区别。它们都有删除旧文本的效果。来自javaTextComponent页面:

setText

  public void setText(String t)

  Sets the text of this TextComponent to the specified text. If the text is null
  or empty, has the effect of simply deleting the old text. When text has been
  inserted, the resulting caret location is determined by the implementation of
  the caret class.

  Note that text is not a bound property, so no PropertyChangeEvent is fired when
  it changes. To listen for changes to the text, use DocumentListener.

  Parameters:
      t - the new text to be set
  See Also:
      getText(int, int), DefaultCaret

【讨论】:

请修复此链接并引用正确的 Swing 组件 JTextComponent 而不是 AWT 组件。还可以考虑参考最新的 javadoc,即 1.7 谢谢,现在我可以确定了。【参考方案2】:

其实是有区别的,我想是的。

如果设置为null,实际写入文本区的值将是空的。但是如果你将它设置为 "" 它将是一个空字符。就像你可以将它设置为“z”一样,会写成z,但null表示未知。在您需要使用 textArea 中编写的文本之前,您不会感觉到差异。

【讨论】:

什么是“空字符”? 空字符有点像空格。在我看来。它是一个字符,但如果你把它打印出来。它什么也不会显示。但是,如果您打印出“null”,它将显示实际文本 - null。 '' 不是空字符,是零长度字符串。【参考方案3】:
JTextArea0.selectAll();
JTextArea0.replaceSelection("");

【讨论】:

请在您的答案中添加一些文字,以便解释您的代码的作用以及它如何回答最初的问题。【参考方案4】:

作者试图清除 JTextArea,而不是添加空字符!

    JTextArea0.selectAll();
    JTextArea0.replaceSelection("");

这会选择整个 textArea,然后将其替换为空字符串,从而有效地清除 JTextArea。

不知道这里有什么误解,但我有同样的问题,这个答案为我解决了。

【讨论】:

以上是关于如何清除 JTextArea?的主要内容,如果未能解决你的问题,请参考以下文章

jTextArea如何加滚动条

JTextArea 中的文本更改事件?如何?

如何扫描 JTextArea 的行?

如何保存 JTextArea 文本?

JTextArea 到 ArrayList<String> 的行

如何创建具有指定宽度和显示所有文本所需的最小高度的 JTextArea?