2008-10-11 4 views
4

필자는 java.awt.Frame의 하위 클래스를 만들고 윈도우의 전체 내용을 수동으로 그리려는 경우 paint() 메서드를 재정의했습니다.Mac OS X에서 AWT 프레임의 드로어 블 영역 가져 오기?

그러나, 그래픽스 오브젝트에 대해, (0,0) 내부 윈도우의 좌측 상부 코너 타이틀 바 장식하지 제 그리기 화소에 대응한다.

Mac OS X 관련 퍼지 요소를 사용하지 않고 첫 번째 드로어 블 픽셀의 좌표 (즉, 데코레이션의 높이)를 플랫폼 간 방식으로 결정할 수 있습니까? 윈도우의 실제 드로어 블 영역을 찾으려면 Panel 구성 요소를 중첩시켜야합니까?

여기 내 코드는 윈도우의 페인트 가능한 영역 내부의 파란색 사각형의 중심을 실패

@Override 
public void paint (Graphics g) { 
    g.setColor(Color.BLUE); 
    g.setPaintMode(); 
    g.fillRect(30, 30, getWidth()-60, getHeight()-60); 
} 

alt text http://x13n.com/paintable-area.png

답변

2

당신은 (컨테이너에서 정의 됨) 또, getInsets 메서드를 호출하여 프레임 세트를 찾을 수 있습니다. 프레임 인세 트는 Frame API 문서 맨 위에서 논의됩니다.

2

그래서 전체 영역을 페인트하고 제목 표시 줄을 전혀 원하지 않습니까?

적어도 JDk 1.4를 사용한다고 가정하면 프레임을 "undecorated"(java.awt.Frame # setUndecorated (boolean)) 프레임으로 선언 할 수 있습니다. 이렇게하면 제목 표시 줄이 만들어지지 않으므로 프레임 칠할 수있는 영역은 프레임이 사용되는 영역과 동일합니다.