gpt4 book ai didi

java - JMenuItem setMinimumSize 不起作用

转载 作者:行者123 更新时间:2023-11-30 06:39:10 25 4
gpt4 key购买 nike

我尝试为我的菜单项设置最小宽度,但它似乎不起作用。这是我的函数,它创建了项目:

 private JMenuItem newItem(String text, String iconPath) {
JMenuItem myMenuItem;
if (iconPath == null || iconPath.isEmpty()) {
myMenuItem = new JMenuItem(text);
}
else {
ImageIcon icon = new ImageIcon(iconPath);
myMenuItem = new JMenuItem(text, icon);
}
// this would work, but then setMaximumSize doesn't have any effect
// myMenuItem.setPreferredSize(new Dimension(250,20));
myMenuItem.setMinimumSize(new Dimension(250,20));
myMenuItem.setMaximumSize(new Dimension(350,20));

return myMenuItem;
}

我做错了什么?

附言。我在 Windows XP 上使用 jdk1.6,带有系统外观的 Servicepack 3

最佳答案

大多数布局管理器都会忽略最小和最大尺寸。这是一个有用的小技巧,可以强制在任何布局管理器中遵守这些尺寸:

private class MyMenuItem extends JMenuItem {
@Override
public Dimension getPreferredSize() {
Dimension preferred = super.getPreferredSize();
Dimension minimum = getMinimumSize();
Dimension maximum = getMaximumSize();
preferred.width = Math.min(Math.max(preferred.width, minimum.width),
maximum.width);
preferred.height = Math.min(Math.max(preferred.height, minimum.height),
maximum.height);
return preferred;
}
}

这样做的好处是即使菜单项的内容发生变化也能正常工作。您将需要添加构造函数以满足您的目的。

关于java - JMenuItem setMinimumSize 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1345902/

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