2017-08-14 31 views
0

我是Java UI設計的新手,我嘗試使用SpringLayout來創建表單。 我把JLabel放在JFrame,加了一些限制。我需要JLabel打到JPanel寬度。但它沒有高度。寬度太小。爲什麼JLabel在使用SpringLayout時高度爲零?

這裏的代碼片段:

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/)。順便說一句 - 直到標籤包含圖標和/或文本,其首選大小將爲0x0。 –

+0

我想稍後將圖像放入JLabel。但是如果我想劃分(縮放)圖像,我需要知道JLabel大小。 –

+0

MCVE在哪裏?順便說一句 - 標籤會根據內容(例如圖像)返回首選尺寸。可能更好的方法是通過在'JPanel'中自定義繪製圖像來重寫getPreferredSize()方法來產生邏輯最小值。然後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); 

這項工作。

相關問題