GUI без пробелов выглядит «переполненным». Как я могу предоставить пустое пространство, не прибегая к явной установке положения или размера компонентов?
java
swing
whitespace
layout-manager
Эндрю Томпсон
источник
источник
Ответы:
Использование различных
LayoutManagers
может обеспечить расстояние между различными компонентами.1.) BorderLayout:
Методы получения и установки
Для горизонтального расстояния : BorderLayout.getHgap () и BorderLayout.setHgap (int hgap)
Для вертикального интервала : BorderLayout.getVgap () и BorderLayout.setVgap ()
2.) FlowLayout:
Методы получения и установки
Для горизонтального интервала : FlowLayout.getHgap () и FlowLayout.setHgap (int hgap)
Для вертикального интервала : FlowLayout.getVgap () и FlowLayout.setVgap ()
3.) GridLayout:
Методы получения и установки
Для горизонтального расстояния : GridLayout.getHgap () и GridLayout.setHgap (int hgap)
Для вертикального интервала : GridLayout.getVgap () и GridLayout.setVgap ()
4.) GridBagLayout:
GridBagConstraints.insets
5.) CardLayout ( пример ):
CardLayout (int hGap, int vGap)
Пример для отображения всех конструкторов в действии:
ВЫВОД :
источник
В графическом интерфейсе Swing существует несколько способов обеспечить разделение между компонентами и пробелами вокруг компонентов:
JToolBar
есть методыaddSeparator()
&addSeparator(Dimension)
.JMenu
использует интервальный компонент, лучше подходящий для меню, доступный черезaddSeparator()
.Но в целом, посмотрите на:
Вот пример использования разделителя макета
hGap
иvGap
значений и границ (в частности,EmptyBorder
), чтобы обеспечить «белое» (фактически показанное красным, чтобы сделать его очень очевидным) пространство. Отрегулируйте счетчики, чтобы увидеть результат.источник
Когда вы используете
BoxLayout
,Box.createVerticalGlue()
метод может помочь вам сделать пробел.Другой метод есть
BorderFactory.createEmptyBorder(int top, int left, int bottom, int right)
. Это может помочь вам сделать пробел вокруг компонента.Спасибо за напоминание Эндрю Томпсона. В последние дни я пересмотрел BoxLayout и обнаружил, что
Box.createVerticalGlue()
можно добавить пробелы в зависимости от размера панели, и вы не можете установить явное значение в пикселях для длины пробела. Но этоBox.createVerticalStrut()
можно сделать. Вот MCTaRE и показать эффект этих двух методов.Box.createHorizontalGlue()
иBox.createHorizontalStrut(int height)
тоже можно использовать. Кроме того,Box.createRigidArea(Dimension d)
имеет возможность тоже создавать пустое пространство.источник
MigLayout
имеет несколько способов создания пространства. (В этом макете пробел называется пробелом.) Пробелы могут создаваться на самом высоком уровне с ограничениями макета, можно создавать промежутки между строками и столбцами, а также можно устанавливать промежутки между отдельными компонентами с ограничениями компонентов. Есть также определенные промежутки вокруг границ контейнера, называемых вставками, у которых есть свое собственное определенное ключевое слово, которое будет установлено.В следующем примере создаются все эти виды пробелов:
У нас есть четыре панели в макете. У каждой из этих панелей есть
MigLayout
менеджер.Эта линия создает контейнерные вставки и вертикальные промежутки между панелями.
Здесь мы применяем пробелы для всей структуры сетки, а также устанавливаем пробелы в контейнерах.
Эта строка создает промежутки между столбцами.
Разрывы строк определяются с помощью этого кода.
Наконец, можно создать разрывы между отдельными компонентами.
источник
JGoodies FormLayout .
Автор Карстен Ленч имеет коллекцию презентаций по дизайну пользовательского интерфейса. В частности, этот PDF говорит о необходимости эстетического пробела. Добавление значимого пространства и одновременное внимание к беспорядку отделяет пшеницу от мякины.
источник
Всякий раз, когда у меня есть эта проблема, я просто использую JPanels. Например, в GridLayout:
Надеюсь, это помогло :)
источник