Java 为什么Gridbag布局没有显示其上的完整组件
我有一个JLabel的2D数组,希望将它们像表格一样放置在面板中,使用网格包布局。我将面板放入另一个具有边框布局的面板中 但是我没有得到完整的Jlabel。 谢谢Java 为什么Gridbag布局没有显示其上的完整组件,java,swing,jlabel,gridbaglayout,border-layout,Java,Swing,Jlabel,Gridbaglayout,Border Layout,我有一个JLabel的2D数组,希望将它们像表格一样放置在面板中,使用网格包布局。我将面板放入另一个具有边框布局的面板中 但是我没有得到完整的Jlabel。 谢谢 setLayout(新的GridBagLayout()); 此.setPreferredSize(新维度(550550)); GridBagConstraints gbc=新的GridBagConstraints(); 对于(int i=0;i
setLayout(新的GridBagLayout());
此.setPreferredSize(新维度(550550));
GridBagConstraints gbc=新的GridBagConstraints();
对于(int i=0;i<10;i++)
对于(int j=0;j<10;j++){
gbc.gridy=j;
gbc.gridx=i;
cells[i][j]=新单元(emptyCell);//Jlabel的子类
单元格[i][j].setPreferredSize(新维度(50,50));
添加(单元格[i][j],gbc);
}
我得到了什么
真正的细胞是什么
不要在组件上使用setPreferredSize()方法:
getpreferredSize()
方法以返回大小这可能不是一个完整的答案,但您应该将.fill设置为.and.weightx和.weighty设置为1.0。事实上,单元格往往会崩溃 当我使用Swing时——不是经常使用——我更喜欢GridBagLayout。但是,您必须熟悉它,才能让它做您想做的事情。发布一篇适当的文章,说明问题所在。
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);
}
this.setPreferredSize(new Dimension(550, 550));