2012-04-23 1 views
1

JScrollPaneJLabel 또는 JButton이 어떻게 표시 크기가 변경되었는지 (예 : 아이콘이 설정된 경우) 변경되었음을 알려줌으로써 화면 이동 막대가 필요한지 여부를 결정할 수 있습니까?JLabel 또는 JButton는, JScrollPane에, 뷰의 사이즈가 변경된 것을 어떻게 통지합니까?

위의 구성 요소를 사용하지 않고도 간단한 동작 인 JPanel으로 이미지를 표시하려면 어떻게해야합니까?

P.S : 소스 코드를 살펴본 결과 지금까지 볼 수있는 것은 Component가 "view"라고 불리며 일부 청취자를 등록하는 JView 또는 JViewport으로 전달된다는 것입니다. 거기에서 일들이 불분명하게 보입니다.

+2

[SSCCE] (http://sscce.org/) – mKorbel

+0

으로 질문을 편집하십시오. @mKorbel :하지만이 방법은 setIcon 사용과 페인트 사용의 차이점을 보여주는 이미지 파일이 필요합니다. 구성 요소의 차원 세트를 더한 것입니다. –

+1

@JamesPoulson 이미지는 1) JRE에서 가져올 수 있습니다. 2) 인터넷에서 핫 링크 된 코드입니다. 3) 코드로 생성됩니다. 메모리에서 기술 2와 3은 SSCCE 문서에 언급되어 있습니다. –

답변

4

JScrollPane API에 명시된 바와 같이 정책을 변경하지 않으면 "구성 요소의 내용이보기보다 커질 때마다 가로 및 세로 스크롤 막대가 모두 나타납니다." pack()Window의 크기를 "하위 구성 요소의 기본 크기 및 레이아웃에 맞도록"조정하면 컨테이너의 유효성을 검사하고 다시 그릴 때 이후의 변경 내용이 스크롤 창에 표시됩니다. 자세한 내용은 Painting in AWT and Swing을 참조하십시오.

+0

확인. 여기에 뭔가 빠져 있어야합니다. JLabel을 viewPortView로 설정하고 아이콘을 설정하지 않고 크기를 설정하려고했습니다. 이것은보기의 크기를 조정하는 것으로 보이지 않습니다. 당신이 언급 한 방법 중 하나에 대한 호출이 필요합니까? 문서의 내용이 뷰보다 커질 때마다 가로 및 세로 스크롤 막대가 나타납니다. 이는 JLabel의 내용에 변화가 있음을 의미합니까? –

+2

내용을 변경 한 후에'revalidate()'와'repaint()'를 호출하는 것이 적절할 수 있습니다. 스크롤 창에 새 지오메트리가 표시됩니다. – trashgod

+0

나는 방법을 시험 할 것이다. 그들이 작동하면 일부 전화가 아이콘에서 전파되고있는 것으로 의심됩니다. –