5

这个问题看起来微不足道,但我找不到解决方案。

当我创建一个表单时,它包含一个JTextArea. 我想在其中放入大的常量文本。如果文本说 1000 行长,我希望我JTextArea的高度为 1000 行(大到足以显示整个文本而没有滚动条)。JTextArea在一个可以有滚动条的面板内,所以当它变得太大时它不是问题(JTextArea该面板中有两个......就像在差异工具中一样)。有谁知道我怎样才能做到这一点?谢谢。

4

4 回答 4

5

如果您在将BorderLayout滚动条添加到. ,另一方面,没有。它不会显示滚动条,除非正如@Xorty 所暗示的那样,您调用您的并给它您想要的尺寸。JTextAreaJScrollPaneJPanelFlowLayoutsetPreferedSize()JScrollPane

于 2010-06-20T23:54:22.453 回答
4

你也可以使用这样的东西(有限的宽度,高度取决于文本,在显示信息消息时很有用):

  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;

}
于 2010-06-21T14:38:27.760 回答
1

增加或减少JTextArea 的高度。输入文本后,调用 JTextArea 的 getPreferredSize() - 它会为您提供显示整个文本所需的大小。之后使用 JScrollPane 的 setPreferedSize() 来设置 JTextArea 的大小

于 2013-02-23T08:59:28.450 回答
0

嗯,首先:它是 JTextArea 而不是 jTextArea。

现在 - 将 JTextArea 放入 JScrollPane。输入文本时,调用getPreferedSize()JScrollPane - 它会为您提供显示整个文本所需的精确大小。此外,除了来自 NetBeans Swing 构建器的“免费设计”之外,我从不使用其他 LayoutManager - 所以我不确定其他 LayoutManager 会如何表现。

于 2010-06-20T23:03:43.233 回答