2017-11-10 25 views
1

JScrollPane의 내용을 너비로 축소하려고했습니다. HorizontalScrollBarPolicyNEVER으로 설정했지만 스크롤바가 나타나지 않고 콘텐츠가 더 이상 표시되지 않습니다.Java Swing - JScrollPane JScrollPane 너비에 맞추는 뷰포트 너비

enter image description here

무엇 내가 그것을 모양을 기대하는 것은 이것이다 :

enter image description here

이 내 MCVE이다 : 나는 슬프게하는 방법이 작업을 수행하는 단서가 없다

final JPanel panel = new JPanel(new MigLayout(new LC().flowX().gridGapX("20").fill())); 

panel.add(new JXTitledSeparator("Test"), new CC().growX().spanX().wrap()); 
panel.add(new JLabel("Shrink me please!"), new CC().minWidth("1")); 
panel.add(new JLabel("Never shall anyone ever be able to shrink me."), new CC().growX()); 

final JScrollPane scrollPane = new JScrollPane(panel); 
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 

final JFrame frame = new JFrame("Test"); 
frame.getContentPane().add(scrollPane); 
frame.setVisible(true); 
frame.pack(); 

, JScrollPaneJViewport은 도움이되는 방법을 제공하지 않으며 JScrollPane 그 자체가 afaik.

또한 이미 MigLayout 문제의 원인이 아니라는 것을 확인하기 위해 BoxLayoutFlowLayout 대신 MigLayout를 사용하여 동일한 것을 달성하기 위해 노력했다.

+0

오른쪽 열에 제약 조건으로 "shrink 0"을 설정하십시오. – Jack

+0

여전히 도움이되지 않습니다. 오른쪽 열은 어쨌든 축소되지 않았습니다. – ScriptKiddy

답변

1

패널에 Scrollable 인터페이스를 구현해야합니다.

을 반환하려면 getScrollableTracksViewportWidth() 메서드를 구현해야합니다.

이렇게하면 패널의 너비가 뷰포트의 너비와 일치하게됩니다. 그런 다음 패널의 각 구성 요소는 레이아웃 관리자의 규칙에 따라 크기가 조정됩니다.

Scrollable 인터페이스를 직접 구현하지 않으려면 Scrollable Panel을 사용하면 스크롤 가능한 속성을 제어 할 수있는 방법을 제공합니다.

0

수축 라벨의 최대 너비를 설정해보십시오.
스크롤 막대가 필요하지 않습니까?
스크롤 창에서 필요한로 스크롤 을 사용할 필요가

final JFrame frame = new JFrame("Test"); 
frame.setLayout(new BorderLayout()); 
frame.add(scrollPane , BorderLayout.CENTER); 
frame.pack(); 
frame.setVisible(true); 

이 보더 레이아웃을 사용하고, 눈에 보이는 전에 팩을 이동 상수합니다.

+0

필자는 필요할 때 레이블이 축소되기를 원하기 때문에 일반적으로 maxWidth를 일반적으로 줄일 수는 없습니다. 그리고 네, 수평'ScrollBar'을 원하지 않습니다. 단지 수직'ScrollBar' 만 원합니다. 그리고 난 당신이 무엇을 의미하는지 모르겠습니다 또는 필요한 경우 스크롤 창 상수에서 필요에 따라 스크롤바를 사용하십시오. – ScriptKiddy

+0

게시물을 편집 한 후에도 여전히 의미가 없습니다. 'HORIZONTAL_SCOLLBAR_AS_NEEDED'는 스크롤바를 표시 할 것입니다, 그러나 나는 그것을 원하지 않습니다, 그것이 문제입니다. 팩 호출은 중요하지 않습니다. 프레임의 크기 만 조절하면됩니다. – ScriptKiddy