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

#java #swing #jpanel #jscrollpane #gui-design

#java #swing #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?

Спасибо

Комментарии:

1.1) Что JScrollBar ? 2) Для более быстрой справки отправьте SSCCE. 3) Используйте EmptyBorder вместо spaceFiller JPanel .

2. Я мог бы спросить «что JScrollPane ?», но вместо этого я спрошу «где этот SSCCE?».

3. Если вам не нравится этот URL в моем домене, попробуйте тот, который находится на SSCCE.org . Это все тот же документ, написанный мной, в домене, для которого я являюсь веб-мастером, но это «чужой сайт», учитывая, что я не являюсь владельцем доменного имени. 😉 Иными словами, было бы здорово, если бы вы перестали ныть и начали продуктивно отвечать на вопросы, которые могли бы помочь решить заявленную проблему. Но, конечно, это не идеальный мир.

Ответ №1:

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

Ответ №2:

В вашем примере кода разве вы не поменяли местами ВОСТОК и ЗАПАД? Разве это не должно быть похоже:

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

Это имело бы больше смысла, так как полоса прокрутки появится с правой стороны (ВОСТОЧНАЯ).

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