Мои JComponents слишком много пикселей - PullRequest
1 голос
/ 21 сентября 2011

Я пытаюсь удалить ненужные пиксели в существующем пользовательском интерфейсе Java Swing.В основном он использует GridbagConstrains, но также и некоторые другие LayoutManager.Многие компоненты просто добавляются в контейнеры, и по умолчанию они дополняются 10 дополнительными пикселями с каждой стороны.Например, в GridBagConstrains у меня есть checkBox, который по умолчанию заполнен слишком большим количеством пикселей на каждой стороне.Я установил ipadxy и вставки на 0, но это не имело никакого эффекта.Кто-нибудь может предложить несколько общих советов?

Ответы [ 4 ]

2 голосов
/ 21 сентября 2011

Ваш JCheckBox может иметь рамку по умолчанию, которая дополняет компонент. Попробуйте установить пустую границу нулевой ширины на флажок, думаю, это поможет:

checkBox.setBorder(BorderFactory.createEmptyBorder());

Редактировать

Для JPanels, убедитесь, что их менеджер макета не добавляет отступы. Распространенным случаем является new JPanel(). По умолчанию макетом для JPanel является BorderLayout с некоторым горизонтальным и вертикальным зазором. Вместо этого используйте new JPanel(new BorderLayout()), который по-прежнему использует макет границы, но горизонтальный и вертикальный разрыв будут равны нулю

Кроме того, JPanels и JToolBars оба являются контейнерами, имейте в виду, что их дочерние элементы также могут иметь непустые границы по умолчанию (например, JButton, добавленный в JToolBar)

1 голос
/ 21 сентября 2011

Некоторые L & F (например, Nimbus , Aqua ) поддерживают JComponent.sizeVariant, как обсуждено в Изменение размера компонента и Использование свойств клиента .

В то же время, будьте осторожны с переполненностью. Также рассмотрите альтернативные проекты, включая панель с вкладками, макет карты, панель инструментов, палитру и немодальный диалог. Смотрите также это Q & A .

1 голос
/ 21 сентября 2011

Используя GridBagConstraints, установите weightx и weighty компонентов на 0.

Затем добавьте невидимый компонент, например, new JLabel() к вашей панели с weightx и weighty из 1.

0 голосов
/ 21 сентября 2011

Вы уже установили Insets?

...