2013-10-13 2 views
0

У меня есть эта краска Компонент, где мне нужно нарисовать круг размером 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); 
} 
} 

Но это, кажется, не компилировать. (ошибка: setBigCircle(java.awt.Graphics,java.awt.Color) in ReactionExperiment.ReactionPanel cannot be applied to (java.awt.Graphics)) Что я делаю неправильно и как я могу это исправить?

О, и, я также должен переписать. Я делаю это перед закрывающей скобкой для своего класса ReactionPanel или где-то еще?

Благодарим за помощь!

+0

Какая строка вызывает эту ошибку? –

+0

строка 'setSmallCircle (g);' и 'setBigCircle (g)' в инструкции 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

Хм, хорошо, да, это кажется логичным. Но как мне добавить параметр «Цветной цвет» или «Цвет с»? Потому что (как показано ниже) я не могу поместить 'Color.YELLOW' в соответствии с требованиями моего задания. –

+0

@Laynie_x Вы уже указали некоторые цветовые переменные. Используйте их. постскриптум Возможно, «желтый» будет лучшим именем, чем 'c'. Это устраняет необходимость в комментарии для описания переменной. –

+0

Согласен, но я должен использовать 'color' и' c'. Я делаю это с помощью 'Color.c'? (Когда я это делаю, это дает мне еще одну ошибку). –

Смежные вопросы