Java 添加到BorderLayout时,无法在JPanel中左对齐JLabel

Java 添加到BorderLayout时,无法在JPanel中左对齐JLabel,java,swing,alignment,layout-manager,boxlayout,Java,Swing,Alignment,Layout Manager,Boxlayout,这似乎是一件简单的事情,但我无法让它工作 我有一个边界布局。我想使用标题栏的顶部。我想添加一个带有标签、按钮和其他组件的JPanel。但是,边框布局的页面开始部分不会与面板左对齐。下面是我尝试设置对齐的地方的注释 我注意到,当我没有将面板添加到边框布局中,而只是直接将JLabel写入时,默认情况下它会保持对齐 不过,这不是我想要的,因为我计划在BorderLayout.PAGE_开始标题区域中水平放置一个BoxLayout.X_轴。这似乎是合理的做法 静态方法的Container pane参数只

这似乎是一件简单的事情,但我无法让它工作

我有一个边界布局。我想使用标题栏的顶部。我想添加一个带有标签、按钮和其他组件的JPanel。但是,边框布局的页面开始部分不会与面板左对齐。下面是我尝试设置对齐的地方的注释

我注意到,当我没有将面板添加到边框布局中,而只是直接将JLabel写入时,默认情况下它会保持对齐

不过,这不是我想要的,因为我计划在BorderLayout.PAGE_开始标题区域中水平放置一个BoxLayout.X_轴。这似乎是合理的做法

静态方法的Container pane参数只是主JFrame上的单个面板

即使我告诉面板将标签左对齐,它也不会显示为左对齐


有人知道我做错了什么吗?

默认情况下,JPanel使用中心对齐的FlowLayout

如果希望组件左对齐,则需要在面板上设置布局以使用左对齐的FlowLayout

阅读FlowLayout API以获得用于设置对齐的正确构造函数


或者您也可以阅读Swing教程,其中提供了用于指定对齐方式的构造函数和有效值。

很高兴它有所帮助。不要忘记接受答案,点击答案旁边的复选标记,这样人们就知道问题已经解决了。我没有在JPanel中使用FlowLayout。正如我提到的,JPanel具有BoxLayout,无论我对包含BoxLayout的JPanel应用的对齐方式如何,JLabel都会对齐到中心。@Bluejazzhark我在JPanel中没有使用FlowLayout。-根据提供的代码,您是。我第一句话的哪一部分不清楚?我只看到代码中创建了一个JPanel。在何处更改面板的布局管理器以使用BoxLayout???我们的评论只能基于发布的代码。张贴一篇恰当的演示文章,说明问题在于你认为你使用的是BoxLayout。
public static void addComponentsToPane(Container pane) 
    {
        JLabel jlabel = new JLabel("I want to left align this inside a JPanel");
        // Doesn't work: jlabel.setAlignmentX(Component.LEFT_ALIGNMENT);
        JPanel jpanel = new JPanel();
        //Doesn't work: jlabel.setAlignmentX(Component.LEFT_ALIGNMENT);
        jpanel.add(jlabel);
        pane.add(jpanel, BorderLayout.PAGE_START);

        // Other parts of the BoxLayout (works fine)
        JButton button = new JButton("Button 2 (CENTER)");
        button.setPreferredSize(new Dimension(200, 100));
        pane.add(button, BorderLayout.CENTER);

        button = new JButton("Button 3 (LINE_START)");
        pane.add(button, BorderLayout.LINE_START);

        button = new JButton("Long-Named Button 4 (PAGE_END)");
        pane.add(button, BorderLayout.PAGE_END);

        button = new JButton("5 (LINE_END)");
        pane.add(button, BorderLayout.LINE_END);
    }