2011-11-04 3 views
0

기본적으로 기본 GUI를 만드는 클래스와 Canvas을 확장하는 다른 클래스가있는 프로그램이 있습니다. 이 캔버스 클래스는 JPanel에 일반적인 형태로 myPanel.add(object)으로 추가됩니다. 이제,이 수업에서 직사각형과 같은 객체를 움직이는 방법을 원합니다.스윙 스레딩

내 질문은; 본질적으로이 JPanel 또는 추가 된 객체 (myCanvas)를 별도의 스레드에서 실행하는 방법이 있습니까? 다음과 같은 방법 또한

:

public void paint(Graphics g){ 
    g.setColor(Color.black); 
    g.drawRect(0, 0, 50, 50); 
} 

이러한 작업은 다양한 방법으로 분할을 사용하는 방법이 있을까요? 나는. Canvas에 그려주는 여러 메서드가 있습니까?

미리 감사드립니다.

+0

@mKorbel'Graphics' 클래스가'java.awt' 패키지에 있다는 사실에도 불구하고, 이것은'awt' 문제가 아니라고 주장 할 것입니다 ... – corsiKa

+0

@glowcoder hmmmm 어쩌면 당신이 맞을 것입니다, 하지만 OP는 Canvas에 대해 다음과 같이 설명했습니다 :-) – mKorbel

답변

1

사용하지 마십시오. Canvas은 스윙 어플 리케이션입니다. JPanel 또는 JComponent를 사용해, paintComponent() 메소드를 오버라이드 (override)합니다. 또한 메소드 시작 부분에 super.paintComponent (g)를 잊지 마십시오.

자세한 내용은 Performing Custom Painting의 스윙 튜토리얼 섹션을 참조하십시오.

1

어딘가에 어딘가에 캔버스 클래스의 목록을 저장하고 논리 외부에있는 것이 좋습니다 ... 다른 스레드를 사용하여이 개체 목록을 업데이트하십시오.

그리기 루프는 캔버스 (또는 적어도 다시 그려야하는 영역)를 지우고 그릴 수 있습니다. 이상적으로 화면 렌더링은 필요한만큼 하위 섹션을 캐시하여 완전한 다시 그리기를 쉽게 할 수있을만큼 빠르지 만 이상적입니다.