嘿我为循环创建了3个不同的JButton数组。然后我将其放入Gridlayout。左侧和右侧转好,但中心只会填满面板。
这是我的右侧代码:
rightPanel = new JPanel();
rightPanel.setLayout(new GridLayout(12, 4, 5, 5));
rightPanel.setBorder(new EmptyBorder(10 ,10 ,10 ,10));
for (int a = 0; a < 12; a++) {
for (int b = 0; b < 4; b++) {
battons[b][a] = new feedbackKnop.RechterKnop();
battons[b][a].setPreferredSize(new Dimension(50, 50));
rightPanel.add(battons[b][a]);
battons[b][a].setEnabled(false);
}
}
这是我的中心代码:
btnPanel = new JPanel();
btnPanel.setLayout(new GridLayout(12, 4, 5, 5));
btnPanel.setBorder(new EmptyBorder(10 ,10 ,10 ,10));
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 4; j++) {
buttons[j][i] = new KleurenButton("");
buttons[j][i].setPreferredSize(new Dimension (50, 50));
btnPanel.add(buttons[j][i]);
buttons[j][i].setEnabled(false);
}
}
我希望它的大小与右侧的圆圈一样
结果:
答案 0 :(得分:1)
GridLayout导致所有网格大小相同,BorderLayout扩展中心以填充窗口。要解决此问题,您需要强制窗口大小固定(或以某个宽高比),或选择不自动扩展其组件的不同布局。 GroupLayout很受欢迎。
答案 1 :(得分:1)
正如评论者所说,这是BorderLayout的一个问题。 BorderLayout有一个“贪婪”的CENTER面板,这意味着默认情况下它会将JComponent中的任何内容拉伸到整个大小。这与使用preferredSize的边框(NORTH,SOUTH等)不同。这就是为什么你的左右面板没有拉伸的原因。
一个简单的解决方案(不对布局进行重大更改)可能是将JPanel添加到中心,为其提供FlowLayout,然后将中心网格面板添加到该中心。它并不理想,但可能是一种快速构建视图原型的方法。