在我的JFrame上,我有一个GridLayout(5,5)。在其中一个单元格中,我有一个CellPanel,它扩展了JPanel,我在其中添加了一个带有ImageIcon的JLabel。我正在以JLabel为中心但是当我将窗口设置为全屏时,JLabel不再是中心了。知道为什么吗?此外,我想在窗口全屏时缩放JLabel。 JFrame大小为640x480。
我的部分代码:
for(int i=0; i<25; i++)
{
switch(i){
case(0):
icon = new ImageIcon("Resurse/entrance.png");
cell = new CellPanel(icon.getImage());
break;
case(22):
icon = new ImageIcon("Resurse/exit.png");
cell = new CellPanel(icon.getImage());
break;
case(5):
icon = new ImageIcon("Resurse/ground.png");
cell = new CellPanel(icon.getImage());
footPrint = new JLabel();
iconSolver = new ImageIcon("Resurse/fading.png");
footPrint.setIcon(iconSolver);
footPrint.setHorizontalAlignment(JLabel.CENTER);
footPrint.setVerticalAlignment(JLabel.CENTER);
cell.add(footPrint);
break;
...
}
}
正常尺码:
全屏:
答案 0 :(得分:2)
关键问题:你的细胞JPanel使用什么布局?
您正在使用FlowLayout,因此JLabel默认为其preferredSize并位于顶部中心,正是您所看到的。
我选择BorderLayout或GridBagLayout。后者,如果只添加和添加一个组件而没有网格包约束,GridBagLayout将自动添加一个组件,使其保持其首选大小。我在国际象棋程序中使用它来将国际象棋棋子集中在国际象棋棋盘格中。添加了标签BorderLayout.CENTER的BorderLayout将使您的JLabel填充单元格JPanel,如果JLabel的图像在JLabel展开时居中,那么它也可以工作。
有些方面记录: