2009-08-03 4 views
1

다른 질문에 표시된 printComponent을 사용하고 있습니다. 그것은 JPanelJPanel에 처음 추가 할 경우 JFrame에 인쇄하고 JFrame을 화면에 그릴 때 유용합니다. 그러나 인쇄하기 전에 그렇게하지 않으면 빈 페이지가 인쇄됩니다. 왜 이런거야?먼저 화면에 구성 요소를 그릴 필요없이 printComponent를 사용할 수 있습니까?

+0

안톤? 미안해,이 그래픽 물건에 대한 멍청한 행동이야. Savvas Dalkitsis, 패널에 대해 선호하는 크기로 설정하면 효과가 있습니까? –

+0

기본 크기는 레이아웃 관리자에게 좋습니다. 그래서 그것은 효과가 없을 것입니다. 또한 그래픽 객체에 대해서는 예를 들어 새로운 JPanel()을 호출하여 구성 요소에서 가져올 수 있습니다. getGraphics(); 스윙 구성 요소를 사용하여 작업 할 때 더 많은 도구를 제공하는 Graphics2D 객체로 안전하게 스 캐닝 할 수 있습니다. Java2D API에 대한 추가 정보는 Java 자습서를 참조하십시오. –

+0

현재 문제의 원인에 대해 조금 혼란스러워합니다. JPanel을 추가 한 후에 다시 그릴지라도 JPanel을 추가 한 다음 JPanel을 추가해도 아무 것도 표시되지 않는다고 말하는 것입니까? – Anton

답변

0

입니다. 그리려는 패널의 초기 크기가 0,0이기 때문입니다. 레이아웃 관리자가있는 컨테이너에 추가되고 표시되면 "정상"크기가됩니다.

+0

크기를 갖도록 설정할 수있는 방법이 있습니까? 나는 패널에게 preferredsize를 주려고했지만 그 didnt 작업. –

+0

setSize (int width, int height)를 시도하십시오. Java가 여전히 컴포넌트를 그리지 않을 수 있기 때문에 이것이 작동 할지는 모르겠지만 시도해 볼 수는 있습니다. –

3

나는 다음과 같은 코드를 사용하여 한 프레임에 표시되지 패널에 BufferedImage를 작성하려면 다음 u는 그래픽 객체에 무엇을 그릴 의미합니까,

JPanel panel = new JPanel(); 
... // add components 
panel.setSize(300, 300); 
panel.doLayout(); 
관련 문제