gpt4 book ai didi

java - JTextArea 的大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:16 26 4
gpt4 key购买 nike

我在 JFrame 中有一组 JPanel。其中一个面板包含一个 JTextArea。目前我是这样创建的:

JTextArea = new JTextArea(5, 40);

这为我提供了一个 5 行乘(大约)40 列的文本区域。

在垂直方向上,这就像我希望的那样工作,该区域填充了父容器的整个高度 - 可能是因为父容器是位于该行中的唯一元素。

父元素的水平宽度由下面的元素决定,并且(通常)比 JTextArea 宽。所以我最终得到了一个两边都有很大边距的文本区域。更糟糕的是,当我将框架调整到更小的位置,使文本区域恰好是父容器的宽度时,它突然“闪烁”并变成一个 1 行高的文本区域,然后是父容器的宽度.

请原谅下面的粗图,它有望说明问题。

enter image description here

简而言之:如何创建一个始终填充最大可用空间的 JTextArea? (如果可能的话,如果用户将框架调整得更小,则滚动条会出现在最小宽度之后)

最佳答案

在 JTextArea 的父容器中(在您的绘图中表示为面板 1),调用函数:

panel1.setLayout(new BorderLayout());

有关引用,请参阅此文档页面:

https://docs.oracle.com/javase/7/docs/api/java/awt/BorderLayout.html

因为您在 panel1 中只有一个 child ,panel1 的 BorderLayout 布局管理器默认情况下会拉伸(stretch)文本区域以使用父容器中的所有可用空间。

您可能希望去掉指定 TextArea 大小的构造函数参数。 BorderLayout 应该为您处理尺寸:)

您可以通过调用请求 Swing 遵守文本区域的某个最小尺寸:

textArea.setMinimumSize(new Dimension(minimum_width, minimum_height));

关于java - JTextArea 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com