我最近开始使用Java,我不太确定如何将BoxedLayout
面板放在我的`JFrame中间。目前,我有以下内容:
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JLabel quizLabel = new JLabel("Java Quiz",SwingConstants.CENTER);
quizLabel.setForeground(Color.BLUE);
quizLabel.setFont(new Font("Arial", Font.BOLD, 20));
quizLabel.setOpaque(true);
panel.add(quizLabel);
JLabel newLineLabel = new JLabel(" ",SwingConstants.CENTER);
newLineLabel.setOpaque(true);
panel.add(newLineLabel);
JLabel createdByLabel = new JLabel("Created By",SwingConstants.CENTER);
createdByLabel.setOpaque(true);
panel.add(createdByLabel);
JLabel nameLabel = new JLabel("XXX",SwingConstants.CENTER);
nameLabel.setOpaque(true);
panel.add(nameLabel);
contentPane.add(panel, BorderLayout.CENTER);
contentPane
取自我的框架。这给了我以下输出:
我希望面板内的三个标签出现在Frame的中间。
答案 0 :(得分:1)
因为它是屏幕上唯一的面板,所以BoxLayout将填充整个框架,因此根据您在面板中创建JComponents的方式,它也会在框架上显示它。
如果我是你,我会做什么,创建一个BorderLayout作为BoxLayout的容器。
这样,您可以将BoxLayout设置为Borderlayout的中心。 看看这段代码是否有效:
//This will fill your frame
JPanel containerPanel = new JPanel(new BorderLayout());
contentPane.add(containerPanel);
//this is the BoxPanel you wnat your components to be organized in
JPanel boxPanel = new JPanel(new BoxLayout());
//Add all your components to the boxPanel
//add your panel with all the components to the container panel
containerPanel.add(boxPanel, BorderLayout.CENTER);
答案 1 :(得分:1)
最简单的方法是使用GridBagLayout。使用默认约束,单个组件将在面板中居中:
//contentPane.add(panel, BorderLayout.CENTER);
contentPane.setLayout( new GridBagLayout() );
contentPane.add(panel, new GridBagConstraints());