加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 19:14:57 所属栏目:Java 来源:网络整理
导读:我目前正在开发一个Swing应用程序,它将在每个平台上执行.一般应用程序不是问题,它在Windows,Linux和Mac上运行良好. 但我有这个JComboBox除了文本还显示图标(大小5050). 我明白,Mac有严格的布局规则,并且不需要超大的JComboBox. 问题是,使用Mac外观,我的JComb

我目前正在开发一个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();

....

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读