gpt4 book ai didi

java - 在 FlowLayout 中设置 JLabel 的大小

转载 作者:搜寻专家 更新时间:2023-10-31 20:04:44 25 4
gpt4 key购买 nike

我有一个使用 FlowLayout 的 JPanel。我向 JPanel 添加了一些 JLabel,使用 setPreferedSize() 调整它们的大小并将它们保存在列表 label_list 中。一切正常。然后我想改变它们的大小:

for(JLabel c:label_list){
c.setPreferedSize(new Dimension(10,10));
}

而且它不起作用。

c.setBackground(Color.red)

和类似的东西有效。为什么我不能在这里使用 setPreferedSize?

c.setBounds(1,1,10,10) 和 c.setSize(10,10)有效,但在我更新 UI(调整面板大小)后,每个尺寸都恢复正常。

最佳答案

Then I want to change their size:

for(JLabel c:label_list){ c.setPreferedSize(new Dimension(10,10)); }

And it doesn't work.

您需要对标签的父级调用 revalidate(),以便它重新执行布局并强制执行其首选大小。

c.setBounds(1,1,10,10) and c.setSize(10,10) Works, but after i update the UI (resizeing the panel) every size goes back to normal.

手动设置边界/大小/位置与父容器的 LayoutManager 冲突。 LayoutManager 的工作是定位和调整子组件的大小。

将布局设置为 null 并调用您自己的 setSize-setLocation/setBounds,或者使用 LayoutManager(推荐)并且从不调用 setSize-setLocation/setBounds。您最多可以调用 setPreferred/setMaximum/setMinimum size,但尽量避免这种情况,因为它会导致交叉 L&F 问题。

关于java - 在 FlowLayout 中设置 JLabel 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11410523/

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