Как лучше всего разместить пробелы между объектами? Может ли объект Swing JseParator быть невидимым сепаратором?

StackOverflow https://stackoverflow.com/questions/2975489

Вопрос

Я пытаюсь положить две кнопки на панель, используя виджеты свинг. Внутри NetBeans IDE, мой JSeparator border свойство установлено на (No border) На панели свойств.

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

Обновлять: Это должно быть тривиально делать это с макетом и без какого -либо объекта сепаратора. Так как же это сделать? Я смотрю в инспектор и свойства настройки Mayout Netbeans и не нахожу никакого способа сделать это. (Ответ: макеты с вставками вместо сепараторов.)

Это было полезно?

Решение

Вы должны взглянуть на методы статической утилиты на 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 Сам с соответствующими минимальными, максимальными и предпочтительными измерениями.

Другие советы

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

От Javadoc для JSeparator:

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

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

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

Использование AddSeparator со значением 1 для высоты делает его невидимым для меня, например:

MyJToolBar.addSeparator(new Dimension(20, 1));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top