【发布时间】:2012-04-07 10:18:55
【问题描述】:
我有一个源自JPanel 的面板。我有一个源自JLabel 的自定义控件。我正在尝试将这个自定义 JLabel 放在我的面板上。
我知道的唯一可行的方法是使用空布局 (setLayout(null)),然后计算自定义 JLabel 的 setLocation() 点,使其位于正确的位置。
自定义JLabel 在此应用程序中从一个面板物理移动到此面板,我相信之前在setLocation 中设置的位置正在影响事物。但是,当我将其设置为 (0,0) 时,组件会上升到左上角。
BorderLayout 不起作用,因为当仅提供 1 个组件并将其放入 BorderLayout.CENTER 时,中心部分会扩展以填充所有空间。
我从另一个站点剪切和粘贴的示例使用了BoxLayout 和component.setAlignmentX(Component.CENTER_ALIGNMENT)。这也不起作用。
另一个答案提到覆盖面板的getInset() 函数(我认为这就是它的名称),但事实证明这是一条死胡同。
到目前为止,我正在使用具有GridBagLayout 布局的面板,当我将自定义JLabel 插入面板时,我包含了一个GridBagConstraints 对象。但是,这是低效的。有没有更好的方法让JLabel 在我的JPanel 中居中?
【问题讨论】:
-
考虑从咆哮中挖掘实际问题。
-
哦,在我使用 GridBagLayout 和 GridBagConstraints 方法之后,如果我最小化然后恢复主窗口,一切看起来都不错。
-
写完这整篇咆哮的时间足以输入谷歌“Swing 与布局管理器一起工作”,点击官方 Swing 教程的第一击,查看视觉指南,确定 BoxLayout 看起来很有希望,并看到一个或多或少做你想要的例子(它包含两个组件,一个是一个)
-
你的意思是对我研究和尝试过的事情进行了相对彻底的解释的整个3句话?我会马上解决的。
-
Robin:尽管我清楚地提到了我发现并已经尝试过的各种事情,但我想我不得不说:我已经尝试过寻找答案。这就是我在这里发帖的原因。斯奈德,像你们这样的精英 cmets 在致力于帮助程序员找到问题答案的网站上没有业务。由于 Java 的所有内容都已在网上某处记录,因此没有什么是无法通过 Internet 搜索得到的。如果我的问题没有达到你的高标准,那么也许你不应该浪费这么多时间来回答。
标签: java swing layout layout-manager