Что лучший способ состоит в том, чтобы поместить пробелы между объектами? Может объект JSeparator Swing быть невидимым разделителем?

Я пытаюсь поместить две кнопки в панели с помощью виджетов Swing. В NetBeans IDE, моем JSeparator border свойство установлено на (No border) в области свойств.

Тем не менее, строка появляется. Это не то, что я ожидал бы от объекта разделителя. Я делаю что-то не так? Происходя из среды в Delphi и C# WinForms, я ожидаю находить некоторые причуды в Swing. Но как точно Вы делаете прозрачный разрыв конкретного размера между двумя кнопками в панели? Сделайте я должен играть с разметками и избежать JSeparator?

Обновление: Это должно быть тривиально, чтобы сделать это с расположением и без любого объекта разделителя. Настолько как дела, что? Я изучаю расположение NetBeans customizer и инспектора свойств и не нахожу способа сделать это. (Ответ: Разметки со Вставками, вместо разделителей.)

11
задан Warren P 2 April 2016 в 22:44
поделиться

3 ответа

Вам следует взглянуть на статические методы утилиты в классе Box . Их можно использовать для создания фиксированных стоек, которые действуют как невидимые разделители; например,

JPanel pnl = new JPanel(new FlowLayout());
pnl.add(new JButton("Hello"));
pnl.add(Box.createHorizontalStrut(10)); // Fixed width invisible separator.
pnl.add(new JButton("Goodbye");

Это дает более компактный код, чем создание / конфигурирование JPanel самостоятельно с соответствующими минимальными, максимальными и предпочтительными размерами.

22
ответ дан 3 December 2019 в 03:04
поделиться

JSeparator предназначен для использования в качестве видимого разделителя между компонентами.

Из javadoc для JSeparator :

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

Если вы хотите поместить компонент между двумя невидимыми компонентами, просто используйте вместо него JPanel . Затем установите размер панели с помощью setPreferSize () и setMin / MaxSize () .

4
ответ дан 3 December 2019 в 03:04
поделиться

Вам не нужен JSeparator. Большинство макетов позволяют установить зазор (пробел) между компопонентами. И класс Box может быть особенно полезен.

2
ответ дан 3 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: