我试图让JFrame
和JPanel
大小相同,所以我可以完美地对齐所有内容。但是当我尝试这样做时,JPanel
和JFrame
看起来大小不同。
这是我的代码:
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
。我做错了什么?
答案 0 :(得分:2)
而不是绝对位置使用LayoutManagers。选择正确的安排,它不仅可以简化您的代码,还可以让您以后更容易更新。
在这种情况下,看起来可以使用BorderLayout来安排GUI。总是你记得你可以将不同的经理分层,以创造更复杂的效果。