【发布时间】:2014-05-11 02:11:32
【问题描述】:
我有以下代码来创建我的 GUI。
private static void createGUI() {
JFrame frame = new JFrame ("Tiles Game");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.setJMenuBar (new JMenuBar());
frame.setContentPane (MainPanel.getInstance());
frame.pack();
frame.setResizable (false);
frame.setLocationRelativeTo (null);
frame.setVisible (true);
}
这是 MainPanel(扩展 JPanel)构造函数:
private MainPanel() {
super (new BorderLayout());
setPreferredSize (new Dimension (IMG_SIZE + 10, IMG_SIZE + 10));
...
panel = new ImagePanel();
add (panel, BorderLayout.CENTER);
}
这是 ImagePanel(扩展 JPanel)构造函数:
private ImagePanel() {
super();
setPreferredSize (new Dimension (IMG_SIZE, IMG_SIZE));
...
}
但是 ImagePanel 与 MainPanel 的左上角对齐而不是居中,所以我在底部和右侧得到了一堆额外的填充,而在顶部和左侧没有。如何将它放在 MainPanel 的中心?
【问题讨论】:
-
这可能是你的形象。图像具有固定大小,如果设置为 0、0 坐标,则每次调整 JFrame 大小时,您的面板看起来都没有居中。
-
如果您在对齐方面遇到问题并且不确定它会导致哪个组件,请尝试为您的组件设置一些可见的边框。例如,将
this.setBorder(new EtchedBorder());放入您的MainPanel构造函数中。然后,您将看到初始化时所需的界限。至于您的代码,我认为布局没有问题 - 一定是其他问题。