2011-01-12 5 views
0

중첩 된 JPanel이있는 레이아웃에서 그려진 타원을 추가하고 싶습니다. 이를 위해 JPanel에 타원 추가 (paintComponent)

나는 다음과 같은 사용

@Override 
public void paintComponent(Graphics g) 
{ 
    super.paintComponent(g); 

    g.setColor(Color.GRAY); 
    g.fillOval(20, 20, 20, 20); 
} 

지금 내 패널 중 하나에 내가이 타원을 추가하려면,하지만 난이를 추가 할 수없는 것.

JPanel myPanel = new JPanel(); 
myPanel.setLayout(new GridLayout(0, 2)); 
//myPanel.add(...); here i wish to add the drawn oval 

모든 의견을 환영합니다!

답변

2

이 작업을 수행하는 방법은 JComponent의 하위 클래스를 사용하여 원하는 그림을 만들고 레이아웃에 추가하는 것입니다. 당신의 GUI 건설 코드에서

class OvalComponent extends JComponent { 
    @Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     g.setColor(Color.GRAY); 
     g.fillOval(20, 20, 20, 20); 
    } 
} 

이있을 수 있습니다 :

JPanel panel = new JPanel(new GridLayout(0, 2)); 
panel.add(new OvalComponent()); 
+0

이것은 나를 위해 작동하지 않습니다, 그것은 그림이 아닙니다 : ( – RyanDawkins

2

당신은 다른 GUI 요소에 대한 mypanel.add (...)를 사용합니다. 그릴 타원형은 java2d 객체가 될 것이고 페인트는 패널에 페인트를 사용해야합니다. 이를 위해 위에 게시 한 코드로 패널의 paint() 메서드를 재정의해야합니다.

0
JPanel panel = new JPanel() { 
    @Override 
    public void paint(Graphics g) { 
     g.drawRect(100, 100, 100, 100); 
    } 
}; 

사용자가 페인트 구성 요소를 추가 할 수있는 JPanel 클래스의 기본 메소드를 대체합니다. 이렇게하면 일반 그래픽 입력을 모두 추가 할 수 있으며 표시됩니다. 해당 코드 행은 패널의 왼쪽 상단 모서리를 기준으로 좌표 (100, 100)에서 정사각형을 생성해야합니다.