我试图将JFrameJPanel设置为相同的大小,以便使所有内容都能完美对齐。但是,当我尝试这样做时,JPanelJFrame的大小似乎不一样。

这是我的代码:

public static void createWindow(){

    JPanel contentPane = new JPanel();
    contentPane.setSize(500,300);
    contentPane.setOpaque(true);
    contentPane.setBackground(Color.WHITE);
    contentPane.setLayout(null);

    JLabel welcomeLabel = new JLabel("Welcome to " + name,SwingConstants.CENTER);
    welcomeLabel.setSize(300,30);
    welcomeLabel.setLocation((contentPane.getWidth()/2)-(welcomeLabel.getWidth()/2),5); //Put the welcomeLabel in the uppercenter; does noet work.
    contentPane.add(welcomeLabel);

    JLabel versionLabel = new JLabel("TBRPG-Engine " + Main.getVersionNumber(), SwingConstants.CENTER);
    versionLabel.setSize(300,30);
    versionLabel.setLocation(contentPane.getWidth()-versionLabel.getWidth(),contentPane.getHeight());
    contentPane.add(versionLabel);

    JFrame frame = new JFrame();
    frame.add(contentPane);
    frame.setTitle(name);
    frame.setSize(contentPane.getWidth(),contentPane.getHeight());
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}


运行此命令时,contentPane大于frame。我究竟做错了什么?

最佳答案

而不是绝对位置使用LayoutManagers。为您所需的安排选择正确的代码,不仅可以简化代码,而且将来可以更轻松地进行更新。

在这种情况下,似乎可以使用BorderLayout来安排您的GUI。永远记住,您可以将不同的经理组合在一起以创建更复杂的效果。

10-06 09:18
查看更多