GridLayout을 사용하면 GridLayout은 행과 열 요소간에 컨테이너의 공간을 고르게 분산시킵니다. 그러나 셀 너비를 계산할 때 정수로 표시되지 않을 경우 초과 된 공간은 컨테이너의 가장자리와 내용 사이에 배치되며 컨테이너의 내용은 GridLayout에 의해 중앙에 배치됩니다. 당신이 공간 (그린 색)를 초과 볼 수 있습니다이 그림에서 GridLayout에서 초과/외부 공간 처리
: 프레임의 크기가 LayoutManager의 각 구성 요소 층을 제공하는 것이 233x233 끌고 있기 때문에을 (20분의 233) = 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);
그래서 나는이 초과하는 공간을하지 않는 용기 '클립'을 만들거나하는 방식으로 정렬 할 수있는 쉬운 방법이 있는지 궁금 : 사진의 프레임을 생성하는 코드의
표시되지만 콘테이너의 내용에 맞게 컨테이너의 크기가 조정됩니다. 맞아요하지만 난 모든 세포에 동일한 크기를 제공하는 GridLayout과의 장점을 유지하려는
AFAIU'GridBagLayout'은 공간의 여분의 픽셀을'GridLayout'보다 잘 처리합니다. 구성 요소에 가중치를 할당하여 먼저 어떤 열과 행이 여분의 공간을 확보 할지를 제어 할 수 있습니다. –
맞아요.하지만 모든 셀에 같은 크기의 GridLayout을 제공하고 싶습니다. GridBagLayout과 각 셀의 다양한 패널이 사용 된 경우에는 그렇지 않습니다. – Reizo