2012-02-14 2 views
0

수업 용 신호등을 만들려고합니다. 우리는 IDE를 사용할 수 없으므로이 작업은 텍스트 패드에서 수행됩니다. 빨간색, 녹색, 노란색 중 하나를 만들 수 있도록 각 서클의 속성에 액세스하려면 어떻게해야합니까?각 서클 속성에 어떻게 액세스합니까?

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.Random; 

public class Lab4Panel extends JPanel implements MouseListener { 


public Lab4Panel(){ 
} 

    JRadioButton red = new JRadioButton("Red", true); 
    JRadioButton yellow = new JRadioButton("Yellow"); 
    JRadioButton green = new JRadioButton("Green"); 

int height, width; 
int radius = 5; 
int x = -1; 
int y = -1; 

protected void paintComponent(Graphics g){ 
    if (x<0 || y<0) { 
     x = getWidth()/2 - radius; 
     y = getHeight()/2 - radius; 
    } 
    super.paintComponent(g); 
    g.drawRect(x - 5,y - 90, 40, 120); 
    g.drawOval(x,y - 80, 4 * radius, 4 * radius); 
    g.drawOval(x,y - 40, 4 * radius, 4 * radius); 
    g.drawOval(x,y, 4 * radius, 4 * radius); 

} 




     public void mouseClicked(MouseEvent e) 
      { 
       if (e.getSource() == red){ 

       } 

       else if (e.getSource() == yellow){ 

       } 

       else if (e.getSource() == green){ 

       } 



      } 

    public void mouseExited(MouseEvent e){} 
    public void mouseReleased(MouseEvent e){} 
    public void mousePressed(MouseEvent e){} 
    public void mouseMoved(MouseEvent e){} 
    public void mouseEntered(MouseEvent e){} 
} 

답변

1

도면 컨텍스트에서 색상을 설정합니다 : g.setColor(new Color(255,0,0)).

+0

각 원이 동일한 색상으로 변경되지 않습니까? – Robert

+1

예, 각 그리기의 컨텍스트 색상을 변경해야합니다. – colbadhombre

+0

아, 그래, 나중에있어 교통 신호등처럼 보이게하려면 어떻게해야합니까? – Robert

1

Graphics#setColor 메서드를 사용하여 현재 색을 설정하십시오. 이후의 모든 그리기 작업은 변경 될 때까지 해당 색상을 사용합니다.

또한 Graphics#fillOval 메서드를 사용하여 현재 색으로 단색 원을 그릴 수 있습니다.

코드는 다음과 같이된다 : 순서가

g.drawRect(x - 5,y - 90, 40, 120); 
g.setColor(Color.RED); 
g.fillOval(x,y - 80, 4 * radius, 4 * radius); 
g.setColor(Color.YELLOW); 
g.fillOval(x,y - 40, 4 * radius, 4 * radius); 
g.setColor(Color.GREEN); 
g.fillOval(x,y, 4 * radius, 4 * radius); 

내가 가질 수있는 색상을하지만 일반적인 생각은 남아있다.

+0

그래서 현재 활성화 된 조명에 fillOval을 사용하고 현재 활성화되지 않은 조명에 대해 drawOval을 사용할 수 있습니까? - – Robert

+1

@paislee Color.RED/YELLOW/GREEN은 Color 클래스에 정의 된 사전 인스턴스화 된 Color 인스턴스입니다. 그것들은 가장 확실하게 객체이고 코드는 컴파일 될 것입니다. –

+0

@BrentWorden 감사합니다. – paislee

2

귀하의 경우 중요한 수정 가능한 개체는 Graphics 개체 g입니다. 타원형을 채우기 위해

g.setColor(Color.RED); 
g.fillOval(x,y - 80, 4 * radius, 4 * radius); 
g.setColor(Color.YELLOW); 
g.fillOval(x,y - 40, 4 * radius, 4 * radius); 
g.setColor(Color.GREEN); 
g.fillOval(x,y, 4 * radius, 4 * radius); 

사용 fillOval()javadoc 대신에 단지 윤곽을 그리기 : 각 타원을 그리는 전에 g에 현재의 색을 변경합니다.

+0

그래서 현재 활성화 된 조명에 대해 fillOval을 사용하고 현재 활성화되지 않은 조명에 대해 drawOval을 사용할 수 있습니까? – Robert

+2

"new Color (Color.RED)"을 수행 할 필요가 없으며 "g.setColor (Color.RED)"는 – jlewis42

+1

@ user512915로 충분합니다. 이는 맞습니다. – paislee

관련 문제