#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), больше похоже на взлом, чем на реальное решение.