在我的JFrame上我有一个GridLayout(5,5)。在其中一个单元格中,我有一个CellPanel,它扩展了JPanel,其中我添加了一个带有ImageIcon的JLabel。我将JLabel居中,但当我将窗口设置为全屏时,JLabel不再是中心。任何想法为什么?另外我想在窗口全屏时缩放JLabel。 JFrame大小是640x480。我的代码JLabel不以全屏幕为中心
部分:
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;
...
}
}
正常大小:
全屏:
关键问题:您的单元JPanel使用什么布局?我会去BorderLayout或GridBagLayout。后者,如果只添加一个组件并添加而没有网格包的约束,则GridBagLayout将会自动添加一个组件。 BorderLayout将使您的JLabel填充单元JPanel,如果在JLabel展开时JLabel的图像居中,这也可以工作。 – 2015-04-04 16:09:36
在这两张照片中,图像仅居中居中,而不是垂直居中。 – 2015-04-04 16:11:28
确实只是水平居中,而不是垂直居中,但为什么? – Andrew 2015-04-04 16:16:44