2012-01-10 2 views
0

여기서 설명 할 내용이 많지 않습니다. 프레임의 크기를 화면의 왼쪽 상단에서 왼쪽 상단으로 조정하는 스크린 샷을 살펴보십시오 (모든 방향에서 발생 함). 나는 이것이 왜 일어나는 지, 그것이 피할 수 있는지/개선되거나 최적화되어 있는지 아닌지 궁금해하고 있었다. 감사. 하지 기본 재 페인트를 허용하고 창 크기 조정된다 동안 다른 표현 이에

enter image description here
JFrame의 크기를 조정할 때 찢어지는 현상을 피할 수 있습니까?

+3

코드가 없을 때 * 이유 *를 말하기는 어렵지만 제 추측은 '다시 칠하기'요청이 필요합니다. 어느 쪽인가, 또는 장시간에 걸치는 작업에 의해, 윈도우의 재 페인트가 끝나지 않게됩니다. – mre

+0

그건 사실이고, 나는 그것을 이해합니다. 모든 컴포넌트의 크기를 다시 칠하는 것은 내 색이 지정된 사각형이라고 생각합니다. 더 멋지게 보이게하는 방법이 있는지 궁금한가요? 내 페인트 코드 최적화에 대해 살펴 봐야 할 수도 있습니다. – rtheunissen

+4

사각형을 다시 칠하는 것이 문제가되는 이유가 표시되지 않습니다. 필자는 Swing 구성 요소를 본 적이 없으므로 사용자 정의 페인팅에 문제가 있어야합니다. 'super.paintComponent (...)'를 호출합니까? – camickr

답변

0

하나의 옵션이 될 것입니다. 예를 들어 창 크기를 조정하는 동안 창 외곽선 만 표시 한 다음 작업이 완료되면 일반 다시 그리기에 따라 추가 공간을 채 웁니다.

+0

어떻게 달성 할 수 있는지에 대한 단서가 있습니까? 그렇지 않다면 생각하면 시간을 할애 할 수 있습니다. 가능한 경우 이상적입니다. 감사합니다 – rtheunissen

+0

@ paranoid-android 당신은 다른 것을하기 위해'repaint' 메소드를 오버라이드 할 수 있습니다. – fireshadow52

+0

@ paranoid-android는 빨대를 쥐어 짜지 않습니다 (일명 무작위 해킹 적용). 대신에 무슨 일이 일어나고 있는지 명확히 이해하려고 노력하십시오. 아마도 사용자 정의 코드에 문제가있을 수 있습니다. 디버깅 및/또는 프로파일 러가 도움이 될 것입니다. – kleopatra

2

opacity 속성을 반드시 준수해야합니다. setOpaque(true)을 사용하면 "구성 요소는 직사각형 범위 내에 포함 된 모든 비트를 페인트하는 데 동의합니다." 그렇게하지 않으면 질문에 표시된 것과 유사한 렌더링 유물을 남길 수 있습니다. 반대로이 examplesetOpaque(false)을 사용하여 모든 픽셀이 그려지지는 않음을 나타냅니다.

관련 문제