小编che*_*976的帖子

GridBagLayout中的JComboBox宽度问题

当我将JComboBox放入带有GridBagLayout的JPanel时,我发现最长的JComboBox项目不会完全显示,而是显示部分带有'...'

例如,它显示'医疗成分'的'医疗保健成分'.

请看这里的截图:

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));
Run Code Online (Sandbox Code Playgroud)

我已经找到了两个解决方案:

  1. 覆盖JComboBox的getPreferenceSize,但有点烦人.
  2. 使用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));
Run Code Online (Sandbox Code Playgroud)

我的问题是:还有其他简单方法可以解决这个问题吗?

环境:Windows 7与JDK 1.6_25(64位版本)

非常感谢

java swing jcombobox gridbaglayout

4
推荐指数
1
解决办法
1535
查看次数

标签 统计

gridbaglayout ×1

java ×1

jcombobox ×1

swing ×1