Java JTextArea自动调整高度大小

Java JTextArea自动调整高度大小,java,swing,jtextarea,layout-manager,boxlayout,Java,Swing,Jtextarea,Layout Manager,Boxlayout,所有组件宽度都相同。 我有一个JPanel(框布局;页面轴)。 我在其上添加了一个Box.filler,其规格如下: 最小尺寸(高度)-1 首选尺寸(高度)JPanel高度 最大尺寸(高度)JPanel高度 我添加了边框7像素厚的JTextArea(仅在下方) 当我输入文本时,JTextArea会扩展,但还不够,在几行之后,文本就会越界(你再也看不到了) 我可以确定存在多少行文本(使用FontMetrics),并可以相应地强制设置大小,但实际上没有任何变化。打印出JTextArea.getHei

所有组件宽度都相同。 我有一个JPanel(框布局;页面轴)。 我在其上添加了一个Box.filler,其规格如下:

最小尺寸(高度)-1

首选尺寸(高度)JPanel高度

最大尺寸(高度)JPanel高度

我添加了边框7像素厚的JTextArea(仅在下方)

当我输入文本时,JTextArea会扩展,但还不够,在几行之后,文本就会越界(你再也看不到了)

我可以确定存在多少行文本(使用FontMetrics),并可以相应地强制设置大小,但实际上没有任何变化。打印出JTextArea.getHeight()确实表明大小根据我的条件发生了变化,但从视觉上看,它保持不变,就好像没有变化一样。我还没有忘记验证和重新喷漆


如何强制JTextArea调整到特定大小?

您也可以将JTextArea包装成文字:

JTextArea.setWrapStyleWord(true);

您还可以尝试使用
setRows(int rows)
设置行数,然后使用
revalidate()
repaint()

您也可以只使用JTextArea换行?:

JTextArea.setWrapStyleWord(true);

您还可以尝试使用
setRows(int rows)
设置行数,然后使用
revalidate()
repaint()

将JTextArea放入JScrollPane中,以保持其他行可见,而无需更改JTextArea在屏幕上所需的空间


有关更多信息,请参阅上的Oracle教程。

您可以将JTextArea放入JScrollPane中,以保持其他行可见,而无需更改屏幕上JTextArea所需的空间


有关更多信息,请参阅上的Oracle教程。

1)您的问题是什么?2) 为了更快地获得更好的帮助,请发布一个。3) 您可能希望使用多行(HTML格式)标签。1)您的问题是什么?2) 为了更快地获得更好的帮助,请发布一个。3) 您可能希望改用多行(HTML格式)标签。Karlovsky写的是超出边界的行,而不是列。@StefanNeubert true参见edietd postKarlovsky写的是超出边界的行,而不是列。@StefanNeubert true参见edietd post