这个问题看起来很琐碎,但我找不到解决方案。

当我创建一个表单时,它包含一个 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在那里的表现如何。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top