gpt4 book ai didi

java - 包含 Icon 的 JComboBox 在 Mac 上太小

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

我目前正在开发一个可以在每个平台上执行的 Swing 应用程序。一般的应用程序没有问题,它在 Windows、Linux 和 Mac 上都可以正常工作。

但我有这个 JComboBox,它除了显示文本外还显示一个 Icon(大小 50x50)。我明白,Mac 有严格的布局规则,超大的 JComboBoxes 并不是真正想要的。问题是,使用 Mac Look-and-Feel,我的 JComboBoxes 具有正确的宽度,但高度太小(相同的高度就好像没有图标)。因此,我的 Icon 的顶部和底部被切掉了,看起来不太好看。

显示没有 IconJComboBox 是没有意义的,但到目前为止我还没有找到一个解决方案来显示 JComboBox正确的高度(即使将 MinimumSizePreferredSizeMaximumSize 设置为 icon.getIconHeight()+2 也无济于事) .使用 Windows 或 Linux 时,JComboBoxes 会正确显示。

是否有任何我可以使用的属性,或者我真的必须忍受被截断的图标吗?

最佳答案

使用 How to Use Combo Boxes 中所示的 CustomComboBoxDemo ,自定义渲染器按预期工作;但是 UI 委托(delegate) com.apple.laf.AquaComboBoxUI 忽略了这样的请求:

petList.setPreferredSize(new Dimension(200, 130));

enter image description here

作为替代方案,javax.swing.plaf.metal.MetalComboBoxUI 生成如下所示的结果。请注意,箭头和滚动条(未显示)保持不变。顺便说一句,箭头可以更改,如图所示 here .

附录:您可以随意更改 UI 默认值,如下所示。

//Create the combo box.
JComboBox petList = new JComboBox(intArray);
Color bg = (Color) UIManager.get("ComboBox.background");
Color fg = (Color) UIManager.get("ComboBox.foreground");
UIManager.put("ComboBox.selectionBackground", bg);
UIManager.put("ComboBox.selectionForeground", fg);
petList.setUI(new MetalComboBoxUI());
ComboBoxRenderer renderer = new ComboBoxRenderer();

....

enter image description here

关于java - 包含 Icon 的 JComboBox 在 Mac 上太小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557259/

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