Java Swing JPanel, который не растягивает ширину

Итак, у меня есть JPanel, в котором будет два JLabels внутри, я не могу понять макет или способ сделать так, чтобы обе метки были выровнены по левому краю и занимали только место, необходимое для содержание, большинство макетов, которые я пытаюсь показать только один из объектов или показать оба пространства равномерно по всей ширине, любая помощь будет оценена!

Я безуспешно пытался установить максимальный и предпочтительный размер на панели =/ Обе метки находятся в одной и той же «строке».


person Tazmanian Tad    schedule 07.11.2014    source источник
comment
Вы можете добавить еще одну панель в свою JPanel с еще одним макетом. (Композитный шаблон проектирования в основном).   -  person Dylan Meeus    schedule 07.11.2014
comment
GridBagLayout может это сделать... Рассмотрите возможность предоставления запускаемого примера, демонстрирующего вашу проблему. Это приведет к меньшей путанице и лучшим ответам. Также взгляните на Должен ли я избегать использования методов set(Preferred|Maximum|Minimum)Size в Java Swing?   -  person MadProgrammer    schedule 07.11.2014


Ответы (2)


..поэтому обе метки выровнены по левому краю

Поместите его в панель с макетом:

new FlowLayout(FlowLayout.LEFT) 

Или (локализовано)

new FlowLayout(FlowLayout.LEADING)
person Andrew Thompson    schedule 07.11.2014
comment
Мне не удалось заставить макет сетки сетки отображать второй компонент на панели, поэтому я попробовал это, и это сработало отлично! - person Tazmanian Tad; 07.11.2014

Например, вы можете использовать GridBagLayout...

Squished

GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.WEST;
add(shrished, gbc);
gbc.gridx++;
gbc.weightx = 1;
add(shrishing, gbc);

«Вау, — скажете вы, — это выглядит сложно, зачем мне это делать, когда другие методы выглядят проще»… хороший вопрос, вы также можете сделать это…

На север

GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.NORTHWEST;
add(shrished, gbc);
gbc.gridx++;
gbc.weightx = 1;
gbc.weighty = 1;
add(shrishing, gbc);

или это...

На юг

GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.SOUTHWEST;
add(shrished, gbc);
gbc.gridx++;
gbc.weightx = 1;
gbc.weighty = 1;
add(shrishing, gbc);

С гибкостью приходит сложность, но на самом деле все сводится к тому, чего вы хотите достичь...

person MadProgrammer    schedule 07.11.2014