JTextArea 的大小
The size of a JTextArea
我在 JFrame
中有一组 JPanel
。其中一个面板包含 JTextArea
。目前我是这样创建的:
JTextArea = new JTextArea(5, 40);
这给了我一个 5 行乘(大约)40 列的文本区域。
在垂直方向上,这正如我所愿,该区域填满了 parent 容器的整个高度 - 可能是因为 parent 是该行中唯一的元素。
水平 parent 宽度由下面的元素决定,它(通常)比 JTextArea
宽。所以我最终得到了一个两边都有很大边距的文本区域。更糟糕的是,当我将框架的大小调整得更小,使文本区域恰好等于 parent 容器的宽度时,它突然 'flicks' 并变成一个 1 行高的文本区域然后 parent.
的宽度
请原谅下面的粗图,它有望说明问题。
简而言之:我如何创建一个 JTextArea
始终填充可用的最大值 space? (如果可能的话,如果用户将框架调整得更小,则滚动条会出现在最小宽度之后)
在 JTextArea 的父容器中(在您的绘图中表示为面板 1),调用函数:
panel1.setLayout(new BorderLayout());
有关参考,请参阅此文档页面:
https://docs.oracle.com/javase/7/docs/api/java/awt/BorderLayout.html
由于您在 panel1 中只有一个子项,因此 panel1 的 BorderLayout 布局管理器将默认拉伸文本区域以使用父容器中的所有可用 space。
您可能想要删除指定 TextArea 大小的构造函数参数。 BorderLayout 应该为您处理尺寸:)
您可以通过调用以下命令请求 Swing 遵守文本区域的某个最小尺寸:
textArea.setMinimumSize(new Dimension(minimum_width, minimum_height));
您必须使用布局管理器,首先请参阅 oficial Oracle docu about layout managers。对于您的情况,BorderLayout
或 GridBagLayout
应该可以正常工作。
开始于:
panel1.setLayout(new BorderLayout());
或
panel1.setLayout(new GridBagLayout());
使用 GridBagLayout
您可以更精确地进行布局(使用 BorderLayout
您有五个区域 - 不多也不少)。使用 GridBagLayout
你可以做更复杂的布局。
我在 JFrame
中有一组 JPanel
。其中一个面板包含 JTextArea
。目前我是这样创建的:
JTextArea = new JTextArea(5, 40);
这给了我一个 5 行乘(大约)40 列的文本区域。
在垂直方向上,这正如我所愿,该区域填满了 parent 容器的整个高度 - 可能是因为 parent 是该行中唯一的元素。
水平 parent 宽度由下面的元素决定,它(通常)比 JTextArea
宽。所以我最终得到了一个两边都有很大边距的文本区域。更糟糕的是,当我将框架的大小调整得更小,使文本区域恰好等于 parent 容器的宽度时,它突然 'flicks' 并变成一个 1 行高的文本区域然后 parent.
请原谅下面的粗图,它有望说明问题。
简而言之:我如何创建一个 JTextArea
始终填充可用的最大值 space? (如果可能的话,如果用户将框架调整得更小,则滚动条会出现在最小宽度之后)
在 JTextArea 的父容器中(在您的绘图中表示为面板 1),调用函数:
panel1.setLayout(new BorderLayout());
有关参考,请参阅此文档页面:
https://docs.oracle.com/javase/7/docs/api/java/awt/BorderLayout.html
由于您在 panel1 中只有一个子项,因此 panel1 的 BorderLayout 布局管理器将默认拉伸文本区域以使用父容器中的所有可用 space。
您可能想要删除指定 TextArea 大小的构造函数参数。 BorderLayout 应该为您处理尺寸:)
您可以通过调用以下命令请求 Swing 遵守文本区域的某个最小尺寸:
textArea.setMinimumSize(new Dimension(minimum_width, minimum_height));
您必须使用布局管理器,首先请参阅 oficial Oracle docu about layout managers。对于您的情况,BorderLayout
或 GridBagLayout
应该可以正常工作。
开始于:
panel1.setLayout(new BorderLayout());
或
panel1.setLayout(new GridBagLayout());
使用 GridBagLayout
您可以更精确地进行布局(使用 BorderLayout
您有五个区域 - 不多也不少)。使用 GridBagLayout
你可以做更复杂的布局。