java - GridBagLayout 中的 JComboBox 宽度问题

标签 java swing jcombobox gridbaglayout

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

例如,它为“医疗保健成分”显示“医疗保健成分...”。

请看这里的截图:

JComboBox width issue

代码是这样的:

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)

    非常感谢

    最佳答案

    关于java - GridBagLayout 中的 JComboBox 宽度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11183587/

    相关文章:

    java - Java 中的分块 http 解码?

    java - JSlider 在 10 秒后隐藏,就像在电视机中一样

    java - 如何在 JScrollPane 中显示底部组件?

    java - 将 JButton 添加到 JTable 单元格

    java - 在 java swing 应用程序中更改 IME 语言

    java - 我的 jComboBox 不对我的 keyListener 使用react,并且 actionPerform 执行奇怪的操作

    java - JComboBox:如何获得适用于 HTML 条目的键选择?

    java - 如何使用 Java 设计模式对一些 XPath 函数进行编程

    java - 可编辑 JComboBox 给出错误 : <identifier> expected and illegal start of type

    java - AspectJ 属性问题