Подтвердить что ты не робот

Есть ли эквивалент "Group Box" в Java Swing?

Попытка создания GUI-приложения в Java/Swing. Я в основном используется для "рисования" графических интерфейсов на стороне Windows с помощью таких инструментов, как VB (или, точнее, Gupta SQLWindows... интересно, сколько людей знают, что это такое;-)).

Я не могу найти эквивалент группового поля в Swing...

С помощью группового окна у вас есть квадратный квадрат (обычно с заголовком) вокруг нескольких связанных виджетов. Одним из примеров является групповой блок вокруг нескольких переключателей (с заголовком, объясняющим, что такое радиокнопки, например групповой блок под названием "Секс" с переключателями "Мужской" и "Женский" ).

Я немного искал... единственный способ, которым я нашел, - добавить подпанель, установить границу на субпанели, а затем добавить все виджеты в "группе" в подпанель, Есть ли более элегантный способ сделать это?

4b9b3361

Ответ 1

Создайте JPanel и добавьте к нему свои радиообъективы. Не забудьте установить макет JPanel на что-то подходящее.

Затем вызовите panel.setBorder(BorderFactory.createTitledBorder(name));

Ответ 2

Другие уже комментируют JPanel и используют TitledBorder, что хорошо.

Однако, когда вы играете с Swing LayoutManagers, вам может показаться, что это раздражает то, что компоненты в разных JPanels не могут правильно выровняться (каждая панель имеет свой собственный LayoutManager).

По этой причине это хорошая практика (проверьте "JGoodies" в Интернете для получения более подробной информации) в GUI Swing, чтобы НЕ использовать TitledBorders, а отдельные группы компонентов в JPanel с помощью JLabel, за которым следует горизонтальный JSeparator.

Ref. " Первая помощь для качания"

Ответ 3

Поле "Группа" - это всего лишь набор "логически сгруппированных виджетов". Это в мире свинг JPanel.

Добавьте свои виджеты в JPanel.

Задайте свой тип границы "Titled Border" и дайте заголовок, то же самое, что и имя фрейма VB6.

Voila. У вас есть групповой ящик.

Ответ 4

Вот цитата из javadocs JRadioButton с тех пор, как вы подняли переключатели.

Реализация переключателя - элемент, который может быть выбран или отменен, и который отображает его состояние для пользователя. Используется с объектом ButtonGroup для создания группы кнопок, в которых может быть выбрана только одна кнопка за раз. (Создайте объект ButtonGroup и используйте его метод add для включения объектов JRadioButton в группу.)

Примечание. Объект ButtonGroup - это логическая группировка, а не физическая группировка. Чтобы создать панель кнопок, вы все равно должны создать JPanel или аналогичный контейнер-объект и добавить к нему Border, чтобы отключить его от окружающих компонентов.

Ответ 5

Не AFAIK, по крайней мере, не со стандартными виджетами.

В VB у вас есть групповой виджет, который по существу является панелью + границей.

В Swing у вас есть JPanel, который является виджнем контейнера, и вы создаете и устанавливаете на нем пограничный объект, только если вам это нужно. Можно утверждать, что это более элегантно, поскольку вы не платите за то, что вы не используете (например, границу)

Ответ 6

Как упоминал Дэвид Коэль о настройке границы с помощью Java-кода, вы также можете достичь аналогичного результата в режиме конструктора.

enter image description here

Ответ 7

Я отвечаю на основе комментария Uri, в котором объясняется, что означает OP под Group Box:

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

Насколько я знаю, каждый JComponent может установить границу для себя, поэтому вам не нужна вторая панель.