2017-10-26 21 views
-1

私は、JLabel(イメージ)を持つGridBagLayoutと、JScrollPaneの内側のJListの幅の50%を使用するスイングJPanelを持っています。グリッドバッグレイアウトのJScrollPaneの水平スクロールバー

本当に長い文字列をJListに追加する場合を除いて、これはうまくいきます。 次に、JScrollPaneは水平方向にスクロールする代わりに、JPanelのすべての領域を取り、JLabelに小さな画像を残します。

奇妙なことに、ウィンドウのサイズを長い文字列の幅より小さくすると、水平スクロールを使い始め、50%/ 50%幅に戻ります。

JListに常にスクロールを使用させ、幅の50%しか取らないようにするにはどうすればよいですか?

(GridBagLayoutのを使用する必要があります)

ハックを歓迎し、

+2

あなたは、このサイトがどのように動作するかを知るために十分な、ここで長い間してきた...あなたは[MCVE]で来て、私たちは、これが行われるかもしれない...何が起こっているのか、そこからいくつかの方法 – Frakcool

+1

多くを伝えることができます。問題を解決するかもしれない各コンポーネントに '0.5の'またはそれ以上の 'weightx'を適用してください。同様に、 'GridLayout'を使用すると同じ結果が得られます – MadProgrammer

+0

JScrollPane.HORIZONTAL_SCROLLBAR_​​ALWAYSを使ってみましたか? – Ansharja

答えて

0

私はスクロールペインに非常に小さなpreferedSizeを設定することで、これを固定してしまいました。 これは何らかの理由でスクロールバーを使用し、幅の50%のままにしているようです。

JScrollPane scroll = new JScrollPane(); 
scroll.setPreferredSize(new Dimension(40, 40)); 
JList list = new JList(); 
scroll.setViewportView(list); 
parent.add(scroll, new GridBagConstraints(x,y,1,1, xWeight,yWeight, GridBagConstraints.CENTER,GridBagConstraints.BOTH, insets, 0,0)); 
関連する問題