使用GridLayout時,它將其容器的空間均勻地分佈在其行和列元素之間。但是,當計算單元格寬度不會以整數形式出現時,超出的空間將以某種方式放置在容器的邊緣和內容之間,容器的內容由GridLayout居中。處理GridLayout中的超出/外層空間
在此照片中可以看到超過空間(着色綠色):
由於框架的尺寸被拖動到233x233 LayoutManager的將提供各成分地板(232/20)= 11個像素的高度和寬度。因此,233%20 = 13個像素超過並置於邊緣。
這是代碼來生成圖像幀:
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout layout = new GridLayout(20, 0);
layout.setHgap(0);
layout.setVgap(0);
frame.setLayout(layout);
for (int j = 0; j < 20; j++) {
for (int i = 0; i < 20; i++) {
JPanel panel = new JPanel();
panel.setBackground((i + j) % 2 == 0 ? Color.BLACK : Color.WHITE);
frame.add(panel);
}
}
frame.pack();
frame.getContentPane().setBackground(Color.GREEN);
frame.setVisible(true);
所以我想如果有一個簡單的方法,使容器「夾」或在某種程度上一致,這超過空間不顯示,但相反,容器的大小調整,以適應其內容完美。
AFAIU'GridBagLayout'比GridLayout更能處理更多的空間像素。通過爲組件分配權重,我們可以控制哪些列和行將首先獲得額外的空間。 –
這是對的,但我想保持GridLayout的優勢,即爲每個單元格提供相同的大小,但如果使用GridBagLayout和每個單元格中更多不同的面板,情況就不會如此。 – Reizo