Java BoxLayout 在左边和右边放置一些对象

Java BoxLayout place some Objects left and some right

我想将子组件放置到 JPanel。但问题是,我想将组件放在父级 JPanel 的左侧和右侧。我正在使用 BoxLayout,目前我已经设置了子组件的 X 对齐方式。我的问题显示在这里:MyProblem

有很多方法可以实现您的目标。

使用BoxLayout时,我通常将组件放入嵌套面板中。

请参阅我的示例,其中我对每个组件使用 BoxLayoutX_AXIS。您也可以使用另一个 LayoutManagers,这只是一个示例:

public class BoxLayoutAlign {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            UIManager.put("Label.font", new Font("Calibri", Font.PLAIN, 20));
            createGui();
        });
    }

    private static void createGui() {
        JFrame frame = new JFrame("example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel contentPanel = new JPanel();
        contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS));
        frame.setContentPane(contentPanel);

        JLabel left = new JLabel("Left");

        JLabel right = new JLabel("Right");

        JLabel center = new JLabel("Center");

        contentPanel.add(placeLeft(left));
        contentPanel.add(placeRight(right));
        contentPanel.add(placeCenter(center));

        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    static JPanel createBoxXWith(Component... components) {
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
        for (Component c : components)
            panel.add(c);
        return panel;
    }

    static JPanel placeRight(Component component) {
        return createBoxXWith(Box.createHorizontalGlue(), component);
    }

    static JPanel placeLeft(Component component) {
        return createBoxXWith(component, Box.createHorizontalGlue());
    }

    static JPanel placeCenter(Component component) {
        return createBoxXWith(Box.createHorizontalGlue(), component, Box.createHorizontalGlue());
    }
}

结果为: