繁体   English   中英

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

[英]Can't left align a JLabel within a JPanel when adding to a BorderLayout

这似乎是一件简单的事情,但我无法让它发挥作用。

我有一个BorderLayout 我想将顶部用作标题栏。 我想添加一个带有标签、按钮和其他组件的JPanel 但是,边框布局的PAGE_START部分不会左对齐面板。 情况就是这样,在我尝试设置 alignment 的地方有评论。

我注意到,当我没有在边框布局中添加面板时,直接将JLabel写入其中时,默认情况下它已离开 alignment。

不过,这不是我想要的,因为我计划将BoxLayout.X_AXIS水平放置在BorderLayout.PAGE_START标题区域中。 似乎是一个合理的做法?

static 方法的Container窗格参数只是主JFrame上的单个面板。

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);
    }

即使我告诉面板左对齐 label,它也不会出现左对齐。

有谁知道我做错了什么?

默认情况下,JPanel 使用带有“中心”alignment 的FlowLayout

如果您希望组件“左”对齐,则需要将面板上的布局设置为使用带有“左”alignment 的FlowLayout

阅读FlowLayout API,了解用于设置 alignment 的正确构造函数。

或者您也可以阅读有关如何使用 FlowLayut的 Swing 教程,该教程提供了指定 alignment 的构造函数和有效值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM