Java GridBagLayout中的JComboBox宽度问题
当我将JComboBox放入带有GridBagLayout的JPanel中时,我发现最长的JComboBox项不会完全显示,而是显示带有“…”的部分内容 例如,它在“保健成分”中显示“Healthcare Ingred…” 请查看此处的屏幕截图: 代码是这样的:Java GridBagLayout中的JComboBox宽度问题,java,swing,jcombobox,gridbaglayout,Java,Swing,Jcombobox,Gridbaglayout,当我将JComboBox放入带有GridBagLayout的JPanel中时,我发现最长的JComboBox项不会完全显示,而是显示带有“…”的部分内容 例如,它在“保健成分”中显示“Healthcare Ingred…” 请查看此处的屏幕截图: 代码是这样的: JPanel infoPanel = JPanel(new GridBagLayout()); dataTypeCB = new JComboBox(dataTypeList.toArray()); infoP
JPanel infoPanel = JPanel(new GridBagLayout());
dataTypeCB = new JComboBox(dataTypeList.toArray());
infoPanel.add(dataTypeCB, new GridBagConstraints(1, 1, 1, 1, 1, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5,5,5,5), 0, 0));
我已经找到了两个解决方案:
dataTypeCB = new JComboBox(dataTypeList.toArray());
JPanel dataTypeCBPanel = new JPanel();//make item can be fully show up.
dataTypeCBPanel.add(dataTypeCB, BorderLayout.CENTER);
infoPanel.add(dataTypeCBPanel, new GridBagConstraints(1, 1, 1, 1, 1, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5,5,5,5), 0, 0));
我的问题是:还有其他简单的方法来解决这个问题吗
环境:windows 7和JDK 1.6_25(64位版本)
非常感谢你能亲自解决这个问题 我之所以得到这个结果,是因为我使用了一个名为“JIDE”的库,它将它的外观和感觉带到了我的应用程序中 我测试了JDK的默认外观,它们的外观没有这个问题。 然后我切换到JIDE的外观,然后我可以复制这个问题 所以我认为问题与外观和感觉有关。ComboBoxUI类 所以我真正需要做的是编写我自己的ComboBoxUI或扩展JIDE库中的UI类 很抱歉,我并没有提供足够的信息,当我问这个问题时,我并没有意识到它和LookAndFeel有关
谢谢你的回答,这是否意味着我需要检查所有项目,找到最长的项目,然后设置PrototypeDisplayValue?非常感谢
找到最长的一个
应该是最好的选择,或者设置严格的大小(“XXXXXXXXXXXXXXXXXXXXX”)
来显示大多数…,让我们调整大小为+1,我最近刚从你那里学到,这个方法是多么奇妙:-)@mKorbel谢谢你的评论。我使用渲染器获取显示名称,JComboBox中的项目实际上只是ID。是的,我可以先得到显示名称,然后得到最长的,再得到尺寸,但是看起来还是很痛苦的嗯。。。尺寸要求在内部计算为最宽项目的尺寸,这似乎与您的屏幕截图中预期的一样。可能是selectedItem的呈现程序(即组合本身)使用的字体比下拉列表的字体稍大吗?顺便说一句,最好提供SSCCE来演示问题。