2013-10-13 24 views
0

我有這個paintComponent,我必須畫一個大小爲int size的圓,因爲它必須被setSmallCircle()setBigCircle()所改變。但我很新的Java和我不知道如何做到這一點如何更改paintComponent中的圓圈大小?

到目前爲止,我有這樣的:

public class ReactionPanel extends JPanel { 

boolean setSmallCircle= false; 
Color color = new Color (255,0,0); //color = red 
Color c = new Color (255,255,0); //color = yellow 
int size; 
int x = 250; 
int y = x; 

public void paintComponent(Graphics g){ 
    super.paintComponent(g); 
    if (setSmallCircle == true){ 
    setSmallCircle(g); 
    } 
    else if(setSmallCircle==true){ 
    setBigCircle(g); 
    } 
} 

void setSmallCircle(Graphics g, Color c){ 
    size = 50; 
    g.setColor(c); 
    g.drawOval(x,y,size,size); 
    g.fillOval(x,y,size,size); 
} 

void setBigCircle(Graphics g, Color c){ 
    size = 150; 
    g.setColor(c); 
    g.drawOval(x,y,size,size); 
    g.fillOval(x,y,size,size); 
} 
} 

但它似乎並沒有被編譯。 (error:setBigCircle(java.awt.Graphics,java.awt.Color) in ReactionExperiment.ReactionPanel cannot be applied to (java.awt.Graphics)) 我在做什麼錯,我該如何解決這個問題?

哦,我也必須打電話repaint。我是否在我的課ReactionPanel或其他地方的大括號之前這樣做?

感謝您的幫助!

+0

哪條線路導致該錯誤? –

+0

line'setSmallCircle(g);'和'setBigCircle(g)'if if else語句 –

回答

0
if (setSmallCircle == true){ 
    setSmallCircle(g); 
} 
else if(setSmallCircle==true){ // Error 
    setBigCircle(g); 
} 

而是做的paintComponent:

if (setSmallCircle) { 
    size = 50; 
} else { 
    size = 150; 
} 
g.setColor(c); 
g.drawOval(x,y,size,size); 
g.fillOval(x,y,size,size); 

代替someBoolean == true可以使用someBoolean和 代替someBoolean != true未使用(!):!someBoolean。 這裏的else就足夠了。

+0

謝謝!這也使我的代碼看起來更好,更容易閱讀。謝謝你的建議 :) –

0

您已經聲明setSmallCircle()作爲

void setSmallCircle(Graphics g, Color c) 

這意味着你需要傳遞兩個參數,一個Graphics對象和Color對象。但是,你只能用

setSmallCircle(g); 

只傳遞一個Graphics對象的方法調用它。

+0

嗯,沒關係,這似乎是合乎邏輯的。但是,如何添加參數「顏色顏色」或「顏色c」呢?因爲(如下所示),我無法根據我的任務要求放置「Color.YELLOW」。 –

+0

@Laynie_x你已經聲明瞭一些顏色變量。使用這些。附:也許'黃色'比'c'更好。這將避免需要評論來描述變量。 –

+0

我同意,但我需要使用'color'和'c'。我用'Color.c'做這個嗎? (當我這樣做時,它給了我另一個錯誤) –

相關問題