2017-11-10 9 views
1

にビューポートの幅に合わせ、私は例えば、幅JScrollPaneシュリ​​ンクのコンテンツを作成しようとしています。私はHorizontalScrollBarPolicyNEVERに設定しましたが、スクロールバーが表示されなくなり、コンテンツがもう表示されなくなりました。Javaのスイング - JScrollPaneのは、JScrollPaneの幅

enter image description here

私はそれがどのように見えることを期待これは何です、

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(); 

私は悲しげにこれを行う方法を見当もつかない:これは私のMCVEある

enter image description here

JScrollPaneJViewportは役立つ可能性のある方法はありません。JScrollPaneそれ自体はafaik。

はまた、私はすでにMigLayoutが問題の原因ではないことを確認するために、代わりにMigLayoutBoxLayoutFlowLayoutを使用して同じことを達成しようとしています。

+0

右列の制約として、「0を縮小」に設定してください。 – Jack

+0

まだ役に立ちません。右の列はとにかく縮小していませんでした。 – ScriptKiddy

答えて

1

あなたがパネル上のScrollableインターフェイスを実装する必要があります。

あなたはtrueを返すように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