동일한 클래스의 각 패널에 대해 페인트 방법을 재정의하고 각 클래스를 개별적으로 호출하는 방법을 알고 싶습니다.동일한 클래스의 여러 패널을 사용한 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(); }
}
당신은 중첩 클래스과 같이 작성하는 것이 좋습니다 :
* "동등한 클래스와이를 따로 호출하는 방법"* - 일반적으로 그러지는 않습니다. 객체의 인스턴스를 사용하여'repaint' 메서드를 호출하여 업데이트를 예약하거나 자식 구성 요소를 다시 칠하도록하는 구성 요소가있는 컨테이너를 무효화 할 수 있습니다. 질문이 애매하고 문맥이 부족합니다. 잠재적 인 답변의 품질을 향상시키기 위해 성취하려는 것을 우리에게 계몽하고 싶을 것입니다 ... – MadProgrammer
[AWT and Swing의 그림 그리기] (http://www.oracle .com/technetwork/java/painting-140037.html) 및 [사용자 정의 페인팅 수행] (http://docs.oracle.com/javase/tutorial/uiswing/painting/) 페인트 프로세스에 대한 자세한 내용은 – MadProgrammer
감사합니다. 빠른 대답. 기본적으로 두 패널을 추가하는 JFrame이 있습니다. 하나의 패널은 클릭이 발견 될 때마다 다시 칠해 져야하고 다른 패널은 이동이 이루어질 때마다 업데이트해야 할 정보와 매 초마다 업데이트되는 타이머가 있어야합니다. 첫 번째 패널에는 많은 이미지가 있고 다른 패널에는 많은 이미지가 없기 때문에 첫 번째 패널 때문에 이미지가 깜박 거리지 않게하고 싶습니다. 필자는 생각했는데 ...이 패널을 다른 패널에 추가하지 않고 paintComponent 메서드를 재정의하면 두 패널을 별도로 다시 칠하기 때문에 깜박 거리는 문제를 해결할 수 있을까요? – zuokuok