2012-03-30 23 views
0

我在使用Java製作的界面中遇到問題。它正在爲JPanel,JTextField,JCheckBox,JRadioButton和JButton正確工作,它們都被正確繪製。但JComboBox不。它只繪製任何已設置的背景顏色。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); 
} 

由於

+0

爲更好地幫助更快地編輯quesstion與[SSCCE](http://sscce.org/) – mKorbel 2012-03-30 07:33:22

+1

原來的問題是因爲我手動設置真實組件的邊界時,僞組件。這適用於沒有子項的組件,但在其他情況下會失敗。 解決方案是重寫JComboBox的setBounds方法,以允許設置兒童界限。 – 2012-03-30 07:45:14

回答

3

JComboBox有兒童組件必須鋪設。嘗試在繪畫之前撥打jComboInstance.setSize()讓它佈置孩子。

+0

不包含電池+1 – mKorbel 2012-03-30 07:52:14