首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含图标的JComboBox在Mac上太小了

包含图标的JComboBox在Mac上太小了
EN

Stack Overflow用户
提问于 2011-07-02 13:21:28
回答 1查看 1.7K关注 0票数 4

我目前正在开发一个Swing应用程序,它将在每个平台上执行。一般的应用程序不是问题,它在Windows、Linux和Mac上工作得很好。

但是我有这个JComboBox,它除了显示文本之外,还显示一个Icon (大小为50x50)。我确实理解,Mac有严格的布局规则,超大的JComboBoxes并不是真正需要的。问题是,使用Mac Look-and-Feel,我的JComboBoxes有正确的宽度,但是高度太小了(就像没有图标一样高)。因此,我的Icon的顶部和底部部分被切断,这并不是真的很好。

在没有Icon的情况下显示Icon是没有意义的,但到目前为止,我还没有找到以正确的高度显示JComboBox的解决方案(甚至将MinimumSizePreferredSizeMaximumSize设置为icon.getIconHeight()+2也没有帮助)。使用Windows或Linux可以正确地显示JComboBoxes

是否有任何财产我可以使用,或我真的必须生活与切断图标?

EN

回答 1

Stack Overflow用户

发布于 2011-07-02 17:09:23

使用在CustomComboBoxDemo中显示的,自定义呈现器按预期工作;但是UI委托com.apple.laf.AquaComboBoxUI忽略这样的请求:

代码语言:javascript
复制
petList.setPreferredSize(new Dimension(200, 130));

作为替代,javax.swing.plaf.metal.MetalComboBoxUI生成如下所示的结果。注意,箭头和滚动条(未显示)保持不变。另外,箭头可以更改,如here所示。

增编:您可以修改UI默认值ad,如下所示。

代码语言:javascript
复制
//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();

....

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6557259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档