当我将 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 with JDK 1.6_25(64bit version)
非常感谢