我有Jlabels的2D数组,并希望在面板中使用网格包布局将它们像桌子一样。我把面板放到另一个边框布局的面板上 但我没有得到完整的Jlabel。 谢谢!
setLayout(new GridBagLayout());
this.setPreferredSize(new Dimension(550, 550));
GridBagConstraints gbc = new GridBagConstraints();
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++) {
gbc.gridy = j;
gbc.gridx = i;
cells[i][j] = new Cell(emptyCell);// subclass of Jlabel
cells[i][j].setPreferredSize(new Dimension(50, 50));
add(cells[i][j],gbc);
}
真正的细胞是什么
答案 0 :(得分:1)
this.setPreferredSize(new Dimension(550, 550));
不要在组件上使用setPreferredSize()方法:
getpreferredSize()
方法以返回大小。答案 1 :(得分:0)
这可能不是一个完整的答案,但你应该将.fill设置为.BOTH,.weightx和.weighty设置为1.0。事实上,细胞往往会崩溃。
当我做Swing时 - 不常见 - 我更喜欢GridBagLayout。但是,你必须熟悉它才能让它做你想做的事。