2012-08-29 223 views
1

可以限制GridBagLayout中的單元尺寸(高度/寬度)嗎?GridBagLayout最大單元尺寸

我的意思是..我有2行有相同的權重x = 0.5,但是當我調整大小時,我不希望第一行得到高於300像素。

另外我不希望它不會佔用任何可用空間,如果它小於300.(將weightx設置爲0)。 在單元格中爲我的組件設置最大尺寸是沒有意義的,因爲當我調整大小時,所有可用空間都被組件填充(組件被調整大小以填充單元格)。

+0

GBL不會,但[MiGLayout](http://www.miglayout.com)會爲你做到這一點。 –

回答

2

據我所知,GridBagLayout無法完成。幸運的是有其他選擇。 MiGLayout的作用類似於GridBagLayout,但功能更強大,表現力更強。它也是基於單元格的,可以讓你設置單元格的最小值,首選值和最大值以及單元格的行數/列數

儘管我建議你制定自己的解決方案,因爲這個解決方案過於依賴行限制並且基於幾個關於你想要什麼的假設,這裏有一個例子:

JPanel panel = new JPanel(new MigLayout("flowy, fillx, filly", "[fill, grow]", "[fill, 0:100:300][fill, 0:100:max(100%,300)]")); 
JPanel redPanel = new JPanel(); 
redPanel.setBackground(Color.RED); 
JPanel bluePanel = new JPanel(); 
bluePanel.setBackground(Color.BLUE); 

panel.add(redPanel); 
panel.add(bluePanel); 

JFrame frame = new JFrame(); 
frame.add(panel); 
frame.pack(); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setVisible(true);