Как добавить пространство в JPanel, чтобы JScrollPane не располагался поверх моих компонентов?

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

Пример кода, который я пробовал:

JPanel eButton = new JPanel(new BorderLayout());
JPanel spaceFiller = new JPanel();
spaceFiller.setSize(30, 10);
eButton.add(editButton, BorderLayout.EAST);
eButton.add(spaceFiller, BorderLayout.WEST);

Проблема с этим кодом в том, что он все еще перезаписывает мою кнопку, и пробел не добавляется. Каков наилучший способ убедиться, что JScrollPane не перекрывает компоненты в моем JFrame?

Спасибо

2 ответа

Решение

Чтобы гарантировать, что размер JPanel соблюдается, вы должны использовать setPreferredSize() вместо setSize().

В вашем примере кода разве вы не поменяли местами восток и запад? Разве это не должно быть похоже на:

eButton.add(editButton, BorderLayout.WEST); 
eButton.add(spaceFiller, BorderLayout.EAST); 

Это будет иметь больше смысла, так как полоса прокрутки появится на правой стороне (EAST).

Обратите внимание, что предлагаемое вами решение, даже если оно может работать (после обмена EAST и WEST), больше похоже на взлом, чем на реальное решение.

Другие вопросы по тегам