对齐 JPanel Swing 中的限制组件

Align to the limit Components in a JPanel Swing

我需要将组件与 JTextArea 组件完全对齐,我目前正在使用 BoxLayout 并且我已经使用了 setAlignmentXsetHorizontalAlignment 到 LEFT 但它是不工作。在这里我上传一张图片来更清楚地说明我的意思。例如,查看“+ Pla PLAMARC”,它显然没有与文本区域组件对齐。

现在这是代码:

//Declarations
private JLabel nomPla;
private JTextArea infoPla;
private JScrollPane textAreaScroll;

//Inside the constructor
nomPla = new JLabel();
infoPla = new JTextArea(2, 50);
textAreaScroll = new JScrollPane(infoPla);

this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

nomPla.setAlignmentX(Component.LEFT_ALIGNMENT);
nomPla.setHorizontalAlignment(nomPla.LEFT);
textAreaScroll.setAlignmentX(Component.CENTER_ALIGNMENT);

this.setBorder(new EmptyBorder(new Insets(25, 25, 25, 25)));

this.add(nomPla, BorderLayout.NORTH);
this.add(textAreaScroll, BorderLayout.NORTH); //Orientacions

我明明告诉nomPla在左边,但这和JTextArea不一样。

这是怎么做到的?

I already used the setAlignmentX and

如果您希望所有组件都相对于 BoxLayout 左对齐,则需要将 setAlignmentX(...) 应用于您添加到 BoxLayout 的所有组件。

编辑:

I just want the labels to be on the left side, not the JTextArea components..

那么您需要为 BoxLayout 面板使用包装面板。

例如:

JPanel wrapper = new JPanel( new FlowLayout(FlowLayout.CENTER) );
wrapper.add(yourBoxLayoutPanel);
frame.add(wrapper);

现在 BoxLayout 中的所有组件都将左对齐,而 BoxLayout 面板将在包装器面板中居中对齐。

布局管理就是用不同的布局管理器嵌套面板,以达到您想要的效果。