微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 包含Icon的JComboBox在Mac上太小了

我目前正在开发一个Swing应用程序,它将在每个平台上执行.一般应用程序不是问题,它在Windows,Linux和Mac上运行良好.

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

显示没有Icon的JComboBox没有意义,但到目前为止我还没有找到一个解决方案来显示具有正确高度的JComboBox(甚至设置MinimumSize,PreferredSize和MaximumSize为icon.getIconHeight()2没有帮助).使用Windows或Linux,JComboBox会正确显示.

有没有我可以使用的财产,或者我真的必须忍受切断的图标?

最佳答案
使用How to Use Combo Boxes显示的CustomComboBoxDemo,自定义渲染器按预期工作;但UI委托com.apple.laf.AquaComboBoxUI忽略了这样的请求:

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

作为替代方案,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();

....

原文地址:https://www.jb51.cc/java/437862.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐