【问题标题】:Limiting JTextArea size to the size of its text将 JTextArea 大小限制为其文本的大小
【发布时间】:2012-01-07 22:43:59
【问题描述】:

我有一个固定大小 (300 x 33) 的 JTextArea,我在 JPanel 中添加了启用换行的功能。每当在其中键入并越过最后一个可见行(在本例中为第二行)时,文本将继续在文本区域的视图之外,并被隐藏。

有没有办法将在 JTextArea 中输入的文本限制为文本区域的大小,而不是它包含的字符数(使其取决于不同字体的每个字符占用的不同空间)?

编辑: 我忘了提到,不固定 JTextArea 的大小并在构造函数中提供行号和列号会导致文本区域拉伸并填充持有它的 JPanel。我相信这是因为面板的布局是 BoxLayout。

【问题讨论】:

  • 如果你限制了文本,如果用户试图添加更多的文本会发生什么?如果他们试图将文本粘贴到组件中怎么办?

标签: java swing jtextarea


【解决方案1】:

您不应该固定 JTextArea 的大小。而是通过使用适当的列号和行号参数调用其构造函数来初始化它,并将其放在 JScrollPane 中,这样如果文本增加,您就不会丢失文本。

【讨论】:

  • 我最初是这样做的,但是由于包含它的 JPanel 的布局是 BoxLayout,因此 JTextArea 的伸展范围将远远超过我给定的约束。
  • @JCtrl:同样,JTextArea 将位于 JScrollPane 内,如果需要,您甚至可以在添加到使用 BoxLayout 的容器之前将其放入另一个 JPanel。
  • 我得出的结论是,从长远来看,您的方法对我的应用程序将更加有效,尽管我将不得不更改一些代码(不仅是 JTextArea)。感谢您的提示。
猜你喜欢
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 2018-03-16
  • 2015-08-24
  • 2011-11-21
  • 1970-01-01
相关资源
最近更新 更多