Mac OS X에서 AWT 프레임의 그리기 영역을 얻으려면?
문제
나는 서브 클래스를 입었다 java.awt.Frame
그리고 그것을 무시했습니다 paint()
방법 창의 전체 내용을 수동으로 그려두고 싶을 때.
그러나 그래픽 객체에서 (0,0)은 창의 왼쪽 상단에 해당합니다. 내부에 제목 막대 장식은 첫 번째 그리기 가능한 픽셀이 아닙니다.
MAC OS X- 특이 적 사용을 피하며 크로스 플랫폼 방식으로 첫 번째 그리기 가능한 픽셀 (즉, 장식의 높이)의 코디네이트를 결정할 수 있습니까? 퍼지 팩터? 내가 둥지를 틀어야할까요? 패널 구성 요소 창의 실제 드로잉 영역을 찾기 위해?
여기에서 내 코드는 창의 페인트 가능한 영역 내부의 파란색 사각형을 중심으로하지 않습니다.
@Override
public void paint (Graphics g) {
g.setColor(Color.BLUE);
g.setPaintMode();
g.fillRect(30, 30, getWidth()-60, getHeight()-60);
}
해결책
getInsets 메소드 (컨테이너에 정의 됨)를 호출하여 프레임 삽입물을 찾을 수 있습니다. 프레임 삽입물은 프레임 API 문서의 상단에서 논의됩니다.
다른 팁
그래서 당신은 전체 지역을 페인트하고 싶고 제목 막대를 전혀 원하지 않습니까?
JDK 1.4 (적어도)를 사용한다고 가정하면 프레임이 "미공개"(java.awt.frame#setundecorated (boolean))로 선언 할 수 있습니다. 이런 식으로 제목 표시 줄이 생성되지 않으므로 프레임 페인트 가능한 영역은 프레임이 소비 된 영역과 동일합니다.
제휴하지 않습니다 StackOverflow