当我将JComboBox放入带有GridBagLayout的JPanel时,我发现最长的JComboBox项目不会完全显示,而是显示部分带有’…’
例如,它显示’医疗成分’的’医疗保健成分’.
请看这里的截图:
代码是这样的:
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));
我已经找到了两个解决方案:
>覆盖JComboBox的getPreferenceSize,但有点烦人.
>使用JPanel包装JComboBox,如下所示,但是经过扭曲的JPanel会引入一些意图并导致对齐问题,但仍然不完美:
第二个解决方案代码:
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位版本)
非常感谢