Lie*_*uwe 5 java swing jtextarea layout-manager
我JPanel在一个JFrame. 其中一个面板包含一个JTextArea. 目前我这样创建:
JTextArea = new JTextArea(5, 40);
Run Code Online (Sandbox Code Playgroud)
这给了我一个 5 行乘(大约)40 列的文本区域。
这在垂直方向上按我的意愿工作,该区域填充了父容器的整个高度 - 可能是因为父容器是该行中唯一的元素。
水平方向上,父宽度由下面的元素决定,并且它(通常)比实际宽JTextArea。所以我最终得到了一个两边都有大边距的文本区域。更糟糕的是,当我将框架缩小到文本区域与父容器的宽度完全相同时,它突然“轻弹”并变为 1 行高的文本区域,然后是父容器的宽度.
请原谅下面的粗略图,它希望能说明这个问题。
简而言之:如何创建一个JTextArea始终填满可用空间的最大空间?(如果可能的话,如果用户将框架调整得更小,则出现滚动条的最小宽度)
在 JTextArea 的父容器(在您的绘图中表示为面板 1)中,调用函数:
panel1.setLayout(new BorderLayout());
Run Code Online (Sandbox Code Playgroud)
如需参考,请参阅此文档页面:
https://docs.oracle.com/javase/7/docs/api/java/awt/BorderLayout.html
由于 panel1 中只有一个子项,panel1 的 BorderLayout 布局管理器默认会拉伸文本区域以使用父容器中的所有可用空间。
您可能希望去掉指定 TextArea 大小的构造函数参数。BorderLayout 应该为您处理尺寸:)
您可以通过调用以下命令来请求 Swing 遵守文本区域的某个最小尺寸:
textArea.setMinimumSize(new Dimension(minimum_width, minimum_height));
Run Code Online (Sandbox Code Playgroud)