2014-12-17 3 views
0

동일한 클래스의 각 패널에 대해 페인트 방법을 재정의하고 각 클래스를 개별적으로 호출하는 방법을 알고 싶습니다.동일한 클래스의 여러 패널을 사용한 Repaint 메서드

패널을 만들 때가 아니라 JPanel을 확장하는 클래스에있는 경우에만 repaint() 호출에 대해서만 알 수 있습니다 (한 패널에서만 가능함).

미리 감사드립니다.

public class Test { 
    public class MyPanel extends JPanel { 
     @Override 
     protected void paintComponent(Graphics g) { 
      super.paintComponent(g); 
      // code here 
     } 
    } 
    JPanel panel = new MyPanel(); 
    panel.repaint(); 
} 

또는 당신이를 만들지 않고이 작업을 수행 할 수 있습니다

public class Test extends JPanel { 
    @Override 
    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     // code here 
    } 

    public void doStuff() { repaint(); } 
} 

당신은 중첩 클래스과 같이 작성하는 것이 좋습니다 :

+0

* "동등한 클래스와이를 따로 호출하는 방법"* - 일반적으로 그러지는 않습니다. 객체의 인스턴스를 사용하여'repaint' 메서드를 호출하여 업데이트를 예약하거나 자식 구성 요소를 다시 칠하도록하는 구성 요소가있는 컨테이너를 무효화 할 수 있습니다. 질문이 애매하고 문맥이 부족합니다. 잠재적 인 답변의 품질을 향상시키기 위해 성취하려는 것을 우리에게 계몽하고 싶을 것입니다 ... – MadProgrammer

+0

[AWT and Swing의 그림 그리기] (http://www.oracle .com/technetwork/java/painting-140037.html) 및 [사용자 정의 페인팅 수행] (http://docs.oracle.com/javase/tutorial/uiswing/painting/) 페인트 프로세스에 대한 자세한 내용은 – MadProgrammer

+0

감사합니다. 빠른 대답. 기본적으로 두 패널을 추가하는 JFrame이 있습니다. 하나의 패널은 클릭이 발견 될 때마다 다시 칠해 져야하고 다른 패널은 이동이 이루어질 때마다 업데이트해야 할 정보와 매 초마다 업데이트되는 타이머가 있어야합니다. 첫 번째 패널에는 많은 이미지가 있고 다른 패널에는 많은 이미지가 없기 때문에 첫 번째 패널 때문에 이미지가 깜박 거리지 않게하고 싶습니다. 필자는 생각했는데 ...이 패널을 다른 패널에 추가하지 않고 paintComponent 메서드를 재정의하면 두 패널을 별도로 다시 칠하기 때문에 깜박 거리는 문제를 해결할 수 있을까요? – zuokuok

답변

1

일반적으로 당신은 paintComponent 메소드를 오버라이드 (override) 할 JPanel를 확장하는 클래스를 생성 확장되는 클래스 JPanel :

JPanel panel1 = new JPanel() { 
    @Override 
    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     // code here 
    } 
}; 

panel1.repaint(); 
+0

답변을 주셔서 감사합니다. 이것은 정확히 내가 찾고 있었던 것입니다. 필자가 위에서 쓴 것처럼 "이 패널을 다른 패널에 추가하지 않고 paintComponent 메서드를 재정의하면 두 패널을 별도로 다시 칠하기 때문에 깜박 거리는 문제를 해결할 수 있습니까?" – zuokuok

0

정상적인 것은 만들려는 각 고유 한 패널에 대해 JPanel을 확장하는 것입니다. 즉, 만드는 각 패널은 자체 클래스입니다. 그런 다음 개별적으로 페인트 방법을 덮어 쓸 수 있습니다.

관련 문제