这个问题看起来微不足道,但我找不到解决方案。
当我创建一个表单时,它包含一个JTextArea
. 我想在其中放入大的常量文本。如果文本说 1000 行长,我希望我JTextArea
的高度为 1000 行(大到足以显示整个文本而没有滚动条)。JTextArea
在一个可以有滚动条的面板内,所以当它变得太大时它不是问题(JTextArea
该面板中有两个......就像在差异工具中一样)。有谁知道我怎样才能做到这一点?谢谢。
这个问题看起来微不足道,但我找不到解决方案。
当我创建一个表单时,它包含一个JTextArea
. 我想在其中放入大的常量文本。如果文本说 1000 行长,我希望我JTextArea
的高度为 1000 行(大到足以显示整个文本而没有滚动条)。JTextArea
在一个可以有滚动条的面板内,所以当它变得太大时它不是问题(JTextArea
该面板中有两个......就像在差异工具中一样)。有谁知道我怎样才能做到这一点?谢谢。
如果您在将BorderLayout
滚动条添加到. ,另一方面,没有。它不会显示滚动条,除非正如@Xorty 所暗示的那样,您调用您的并给它您想要的尺寸。JTextArea
JScrollPane
JPanel
FlowLayout
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 的 setPreferedSize() 来设置 JTextArea 的大小
嗯,首先:它是 JTextArea 而不是 jTextArea。
现在 - 将 JTextArea 放入 JScrollPane。输入文本时,调用getPreferedSize()
JScrollPane - 它会为您提供显示整个文本所需的精确大小。此外,除了来自 NetBeans Swing 构建器的“免费设计”之外,我从不使用其他 LayoutManager - 所以我不确定其他 LayoutManager 会如何表现。