隐形JComboBox

时间:2010-04-19 17:14:06

标签: java jcombobox

我有点问题。 我有一些JQueryboBox到JDialog,但它们不会出现......而且我可以选择它们(见图)。

alt text http://grab.by/3RwI

这是我的代码:

for(int i = 0; i<11; i++)
    {
        JComboBox jC = new JComboBox(posteList);
        jC.setBounds(300, posY, 100, 20);
        jC.setSelectedIndex(0);
        this.add(jC);
        posY += 30;
    }

你有想法解决这个问题吗? 谢谢!

3 个答案:

答案 0 :(得分:2)

您不应该致电setBounds(),您需要使用布局来管理组件位置

答案 1 :(得分:0)

手动设置边界后,调用JComboBox的doLayout()方法。然后组合框将正确显示。 E.g:

JPanel panel = new JPanel();
panel.setLayout(null);

String[] items = {"hello","goodbye","etc"};
JComboBox cbox = new JComboBox(items);
panel.add(cbox);
cbox.setBounds(0, 0, 100, 20);
cbox.doLayout(); // force the JComboBox internals to use your bounds

答案 2 :(得分:0)

我找到了解决问题的方法。如果您正在为GlassPane使用JPanel,则在玻璃窗格上使用JInternalFrame。如果您尝试绘制JFileChooser或JCombobox,有时弹出窗口不会向下滚动(我的意思是它向下滚动但在JPanel下滚动)。 Here是来自Oracle的bug报告:  当我的同事发现这个错误报告时,我的眼睛闪闪发亮。所以我将bug报告的解决方案实现到JFrame,然后弹出窗口工作正常。步骤如下:

  1. 首先,您需要创建一个JFrame。
  2. 从bug报告中实现修复(hack)。
  3. 您必须将JPanel(GlassPane)添加到JFrames rootPane,例如:frame.getRootPane().setGlassPane(panel);
  4. 当您添加JComboBox时,请设置:comboBox.setLightWeightPopupEnabled(true)
  5. 我希望这也是你问题的解决方案。它对我有用。