Java JComboBox不涂漆

Java JComboBox不涂漆,java,swing,combobox,paint,Java,Swing,Combobox,Paint,我在用Java制作的接口中遇到了一个问题。对于JPanel、JTextField、JCheckBox、JRadioButton和JButton,它工作正常,它们都被正确地绘制。但JComboBox没有。它只绘制已设置的任何背景颜色 由于项目的复杂性,这些组件都没有添加到容器中,而是实际上存在,并且被绘制到容器上,其他组件正在工作,因此我认为这不是问题所在:以下是创建代码: paintableComponent = new JComboBox(new String[]{"test"}); 这是一

我在用Java制作的接口中遇到了一个问题。对于JPanel、JTextField、JCheckBox、JRadioButton和JButton,它工作正常,它们都被正确地绘制。但JComboBox没有。它只绘制已设置的任何背景颜色

由于项目的复杂性,这些组件都没有添加到容器中,而是实际上存在,并且被绘制到容器上,其他组件正在工作,因此我认为这不是问题所在:以下是创建代码:

paintableComponent = new JComboBox(new String[]{"test"});
这是一个伪组件内部的绘制代码

if(this.getParentComponent() != null && this.getParentComponent() instanceof Component && !((Component)this.getParentComponent()).getValue("style.overflow").equals("visible")){
    g.setClip(this.getParentComponent().getX(), this.getParentComponent().getY(), this.getParentComponent().getWidth(), this.getParentComponent().getHeight());
}
Graphics oldG = g;
g = g.create(getX(), getY(), getWidth(), getHeight());
paintableComponent.paint(g);
g = oldG;
Iterator<Component> i = children.iterator();
while(i.hasNext()){
    i.next().paint(g);
}
if(this.getParentComponent()!=null&&this.getParentComponent()instanceof Component&!((Component)this.getParentComponent()).getValue(“style.overflow”).equals(“可见”)){
g、 setClip(this.getParentComponent().getX()、this.getParentComponent().getY()、this.getParentComponent().getWidth()、this.getParentComponent().getHeight());
}
图形oldG=g;
g=g.create(getX(),getY(),getWidth(),getHeight());
可涂漆组件。涂漆(g);
g=oldG;
迭代器i=children.Iterator();
while(i.hasNext()){
i、 下一步().油漆(g);
}

提前感谢

JComboBox
包含必须布局的子组件。在绘制之前,尝试调用
jComboInstance.setSize()
,让它布局子组件。

JComboBox
具有必须布局的子组件。在绘制之前尝试调用
jComboInstance.setSize()
,让它布局子对象。

为了更好地帮助更快地编辑问题,结果发现问题是因为我在创建伪组件时手动设置了真实组件的边界。这在没有子级的组件上运行良好,但在其他情况下失败。解决方案是覆盖JComboBox的setBounds方法,以允许设置孩子的边界。为了更好地帮助更快地编辑问题,结果发现问题是因为我在创建伪组件时手动设置了真实组件的边界。这在没有子级的组件上运行良好,但在其他情况下失败。解决方案是重写JComboBox的setBounds方法,以允许设置儿童边界。