如何将JTEXTAREA设置为具有与其包含文本大小相匹配的高度(以避免滚动条)
-
28-09-2019 - |
题
这个问题看起来很琐碎,但我找不到解决方案。
当我创建一个表单时,它包含一个 JTextArea
. 。我想在其中写大量恒定文本。如果文字说1000行,我要我 JTextArea
要高1000行(足够大,可以在没有滚动条的情况下显示整个文本)。 JTextArea
在一个可以有滚动栏的面板内 JTextArea
在该面板中。有人知道我该如何实现吗?谢谢。
解决方案
这 BorderLayout
如果您简单地放置您的 JTextArea
在一个 JScrollPane
在将其添加到您的 JPanel
. FlowLayout
, 另一方面,没有。除非 @xorty亲密,否则它将不会显示滚动条 setPreferedSize()
在你的 JScrollPane
并给它您想要的尺寸。
其他提示
您也可以使用此类内容(宽度有限,高度取决于文本,显示信息消息时有用):
public JTextArea createTextAreaFitToText(String message, Dimension minimalSize){
JTextArea aMessagePanel = new JTextArea();
aMessagePanel.setText(message);
/*for modelToView to work, the text area has to be sized. It doesn't matter if it's visible or not.*/
aMessagePanel.setPreferredSize(minimalSize);
aMessagePanel.setSize(minimalSize);
Rectangle r = aMessagePanel.modelToView(aMessagePanel.getDocument().getLength());
Dimension d = new Dimension(minimalSize.width, r.y + r.height);
aMessagePanel.setPreferredSize(d);
return aMessagePanel;
}
增加或降低JTextarea的高度。输入文本后,请致电JTextarea的GetPreferredSize() - 它将为您提供显示整个文本所需的大小。之后,JSCrollpane的使用SetPreffrefersize()设置JTextarea的大小
好吧,首先:这不是jtextarea。
现在 - 将Jtextarea放入JSCrollpane。输入文本时,请致电 getPreferedSize()
JSCrollpane的著作 - 它将为您提供显示整个文本所需的精确尺寸。另外,除了来自Netbeans Swing Builder的“免费设计”之外,我再也没有使用其他Layoutmanager - 因此,我不确定其他Layoutmanagers在那里的表现如何。
不隶属于 StackOverflow