Выровнять по пределу Компоненты в JPanel Swing

Мне нужно полностью выровнять компоненты JTextArea компоненты, я в настоящее время использую BoxLayout и я уже использовал setAlignmentX а также setHorizontalAlignment ВЛЕВО, но это не работает. Здесь я загружаю изображение, чтобы прояснить, что я имею в виду. Например, посмотрите на "+ 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,

Как это делается тогда?

1 ответ

Решение

Я уже использовал setAlignmentX и

setAlignmentX(...) необходимо применить ко всем компонентам, которые вы добавляете в BoxLayout, если вы хотите, чтобы все были выровнены относительно BoxLayout.

Редактировать:

Я просто хочу, чтобы метки были слева, а не компоненты JTextArea.

Затем вам нужно использовать панель-оболочку для панели BoxLayout.

Например:

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

Теперь все компоненты в BoxLayout будут выровнены по левому краю, а панель BoxLayout будет выровнена по центру на панели-обертке.

Управление раскладкой - это вложение панелей с другим менеджером раскладки для достижения желаемого эффекта.

Другие вопросы по тегам