문제

나는 서브 클래스를 입었다 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))로 선언 할 수 있습니다. 이런 식으로 제목 표시 줄이 생성되지 않으므로 프레임 페인트 가능한 영역은 프레임이 소비 된 영역과 동일합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top