gpt4 book ai didi

java - 实现前获取JPanel的大小

转载 作者:搜寻专家 更新时间:2023-11-01 02:31:46 25 4
gpt4 key购买 nike

我已经创建了 JPanel 并且已经向其中添加了组件,我打算将该 JPanel 传递给 PopUpFactory...那么我可以在传递它之前获取 JPanel 的大小吗?

我将 Jlabel 放入其中,然后是文本,但我不知道该文本的大小...

最佳答案

您可以使用 setPreferredSize(Dimension) 设置首选尺寸;例如

JPanel pnl = new JPanel(new BorderLayout());
pnl.setPreferredSize(new Dimension(640, 480));

此值随后可通过调用 getPreferredSize() 获得,并将在布置组件时使用,但请注意,不能保证它会实际以该尺寸呈现。

为什么在渲染之前实际上需要尺寸?通常,使用 Swing 编程时,您不需要处理明确的尺寸/尺寸,因为所选布局会为您处理这些细节。

编辑

为了解决 OP 关于 JTextField 的查询,这里的一个选项是调用基于 int 的构造函数,该构造函数接受预期的列数。这会导致文本字段呈现得足够宽以支持该数量的字符。

我的第二点针对的是不应直接调用 setXXXSize 方法以及开发人员应完全依赖 LayoutManager 的评论。这并不总是合适的——通常需要设置主应用程序框架的首选大小。例如,假设我正在用 Swing 编写一个简单的浏览器应用程序。主要框架的大部分是用于呈现 HTML 的 JEditorPane。如果我没有为该组件(或包含的框架)设置首选大小并且我调用了 pack(),框架可能会被渲染得尽可能小,而不是合理的尺寸。

关于java - 实现前获取JPanel的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7709635/

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