2017-08-14 13 views
0

Java UIの新しいデザインで、SpringLayoutを使用してフォームを作成しようとしています。 JLabelJFrameに入れていくつかの制約を加えました。 JLabelの幅がJPanelの幅にする必要があります。しかし、それは高さがゼロです。また、幅が狭すぎます。ここでSpringLayoutを使用するとJLabelの高さがゼロになるのはなぜですか?

は、コード断片である:

imageContainer = new JLabel(); 
imageContainer.setBorder(BorderFactory.createLineBorder(Color.BLACK)); 

filterButton = new JButton("Filter"); 
filterButton.addActionListener(filter); 

layout.putConstraint(SpringLayout.WEST, imageContainer, 5, SpringLayout.WEST, this); 
layout.putConstraint(SpringLayout.NORTH, imageContainer, 5, SpringLayout.NORTH, this); 
layout.putConstraint(SpringLayout.EAST, imageContainer, 5, SpringLayout.EAST, this); 

layout.putConstraint(SpringLayout.WEST, filterButton, 5, SpringLayout.WEST, this); 
layout.putConstraint(SpringLayout.NORTH, filterButton, 5, SpringLayout.SOUTH, imageContainer); 
layout.putConstraint(SpringLayout.SOUTH, filterButton, 5, SpringLayout.SOUTH, this); 

そして、これは私が間違って行くのですresult

のですか?親コンテナにサイズJLabelを伸ばす方法?

+1

* "ここにコード断片があります:" *より早くヘルプをするには、[MCVE]または[ショート、自己完結型、正しい例](http://www.sscce.org/)を投稿してください。 BTW - ラベルにアイコンやテキストが含まれるまで、その好ましいサイズは0x0になります。 –

+0

後でJLabelに画像を入れたいです。しかし、私がイメージを傷つける(スケールする)ためには、JLabelのサイズを知る必要があります。 –

+0

MCVEはどこですか? BTW - ラベルは内容(例えば画像)に基づいて好ましいサイズを返します。おそらく、getPreferredSize()メソッドをオーバーライドして論理最小値を生成する 'JPanel'のイメージをカスタムペイントすることでこれに近づける方が良いでしょう。次に、1)レイアウトによってパネルにスペースが割り当てられます。 2)カスタムペイントは、パネルが終わるサイズに基づいてイメージを描くことができる。 –

答えて

0

私の問題はJLablelにありません。 このを制約で使用しようとしましたが、実際は正しい方法ではありません。あなたはこのようにコンテナを取得する必要があります。その後

Container contentPane = this.getContentPane(); 

あなたは制約でのcontentPaneを使用することができます。

layout.putConstraint(SpringLayout.WEST, imageContainer, 5, SpringLayout.WEST, contentPane); 
layout.putConstraint(SpringLayout.NORTH, imageContainer, 5, SpringLayout.NORTH, contentPane); 
layout.putConstraint(SpringLayout.EAST, imageContainer, -5, SpringLayout.EAST, contentPane); 
layout.putConstraint(SpringLayout.SOUTH, imageContainer, -5, SpringLayout.NORTH, filterButton); 

layout.putConstraint(SpringLayout.WEST, filterButton, 5, SpringLayout.WEST, contentPane); 
layout.putConstraint(SpringLayout.SOUTH, filterButton, -5, SpringLayout.SOUTH, contentPane); 

そして、この作品を。

関連する問題