Выровнять по пределу Компоненты в JPanel Swing - PullRequest
0 голосов
/ 04 декабря 2018

Мне нужно полностью выровнять компоненты к JTextArea компонентам, в настоящее время я использую BoxLayout, и я уже использовал setAlignmentX и setHorizontalAlignment для ВЛЕВО, но это не работает.Здесь я загружаю изображение, чтобы прояснить, что я имею в виду.Например, посмотрите на «+ Pla PLAMARC», он явно не выровнен с компонентом текстовой области.

Components not aligned with JTextArea components

На данный момент это код:

//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 Ответ

0 голосов
/ 04 декабря 2018

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

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

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

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

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

Например:

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

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

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

...