Выровнять по пределу Компоненты в 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 будет выровнена по центру на панели-обертке.
Управление раскладкой - это вложение панелей с другим менеджером раскладки для достижения желаемого эффекта.