Ваш JCheckBox
может иметь рамку по умолчанию, которая дополняет компонент. Попробуйте установить пустую границу нулевой ширины на флажок, думаю, это поможет:
checkBox.setBorder(BorderFactory.createEmptyBorder());
Редактировать
Для JPanels, убедитесь, что их менеджер макета не добавляет отступы. Распространенным случаем является new JPanel()
. По умолчанию макетом для JPanel является BorderLayout с некоторым горизонтальным и вертикальным зазором. Вместо этого используйте new JPanel(new BorderLayout())
, который по-прежнему использует макет границы, но горизонтальный и вертикальный разрыв будут равны нулю
Кроме того, JPanels и JToolBars оба являются контейнерами, имейте в виду, что их дочерние элементы также могут иметь непустые границы по умолчанию (например, JButton, добавленный в JToolBar)