2012-07-08 5 views
1

-Hi 모두! 웨이브 간섭을 시뮬 레이팅하는 자바 애플릿을 만들고 있는데, 거의 완료되었습니다 (GPL 라이센스). 그러나 AWT 페인트 사이클과 관련하여 답을 찾기가 어려워서 두 가지 질문이 있습니다.AWT 덮어 쓰기 및 그래픽 저장

  1. 단추를 누를 때 나타나는 '대략'오버레이를 만들고 싶습니다. 이 작업을 수행하려는 방법은 정적 메시지 및 범례 개체를 사용하여 전체 애플릿 창을 그려 보는 것입니다. 문제는 remove()를 사용하지 않고 AWT 구성 요소가 전경에서 그려지지 않도록하는 것입니다. AWT가 일시적으로 그릴 수 없게하는 방법이 있습니까?

  2. 제 정재파 모드의 경우 정재파가 최대 진폭에 도달 할 때마다 노드 및 노드 마커를 계산하고 보조 그래픽으로 그려야합니다 (모두 내 자신을 수행 할 수 있음). 페인트 사이클마다 기본 그래픽 (따라서 디스플레이). 누군가 그렇게 할 단계를 설명 할 수 있습니까? 두 번째 그래픽 객체를 만든 다음 한 번 그리면 각주기마다 기본 그래픽으로 그려집니다.

내 질문에 대답 할 수 있다면 매우 감사 할 것입니다. 첫 번째 질문에 대한 응답 건배, 잭 앨리슨

답변

0

:

당신은 당신의 코드에서 당신이 그것을 inlcluded 한 경우 paint()/paintComponent() 방법을 사용하지 않도록 설정할 수 없습니다. 거기에 있다면 실행됩니다. 그러나 플래그를 작성하여 플래그가 true 인 경우에만 물건을 그릴 수 있습니다. 내 뜻을 알려 드리겠습니다.

boolean flag; 

... 

public void paintComponent(Graphics comp) { 
    if (flag) { 
     Graphics2D comp2D = (Graphics2D) comp; 
     //drawing statements 
    } 
} 

public void actionPerformed(ActionEvent event) { 
    flag = true; 
    repaint(); 
}