JScrollPane не показывает, является ли ограничение BorderLayout CENTER?
-
18-09-2019 - |
Вопрос
Некоторое время занимаюсь разработкой игры и сейчас работаю над графическим интерфейсом или, по крайней мере, пытаюсь это сделать.У меня была серьезная проблема: я не мог изменить размер кадра (без проблем), так как я не очень хорошо разбирался в менеджерах макетов.Спустя несколько проектов, пришло время вернуться и поработать над игрой, и я столкнулся с проблемой...
Базовый макет основного фрейма — mainPane, содержащий одну gameScrollPane и одну controlPanel.Панель прокрутки — это панель прокрутки, а панель управления — обычная панель.Панель прокрутки содержит основную игровую панель.
Поскольку я хотел, чтобы панель прокрутки занимала большую часть экрана, а панель управления занимала небольшую нижнюю область, почти так же, как во многих играх, подобных Sim, поэтому выбрал макет Border для основной панели.Я добавил панель прокрутки и установил ограничения ЦЕНТР, а панель управления добавила ограничения ЮГ.Панель прокрутки не отображалась, поэтому я пробовал разные ограничения, и кажется, что только когда я устанавливаю ограничение панели прокрутки на север, она вообще отображается.
Чтобы продемонстрировать это, я создал небольшое видео...http://screenjel.ly/q5RjczwZjH8
Как видите, когда я меняю значение СЕВЕР на ЦЕНТР и запускаю заново, его как будто нет!
Бонусные баллы для всех, кто ясно видит вторую проблему, о которой я могу задать еще один вопрос после того, как эта проблема будет решена!
Я благодарю вас за ваше время, чтобы прочитать это.
Заранее спасибо за любые идеи и мысли :)
Рел
Решение
У меня не получается показать видео.Это буферизация длилась целую вечность.
Я предполагаю, что полоса прокрутки фактически заполняет центр;это просто ваша игровая панель, которая не отображается.
Ваша игровая панель должна возвращать разумные значения для getPreferredSize()
.
Обновлять
Еще одна вещь, которую вы можете захотеть сделать, — это реализовать на игровой панели Scrollable
интерфейс.Затем вы можете переопределить getScrollableTracksViewportWidth
и ...height
вернуться true
поэтому ваша панель будет соответствовать размерам панели прокрутки.
Другие советы
Если бы вы для начала опубликовали какой-то код, вы могли бы получить очень быстрый ответ.К счастью, вы разместили в комментариях ссылку на другой ответ.
Функция setContentPane() выглядит странно, особенно после того, как с ней были сделаны некоторые вещи, которые затем будут уничтожены.Однако это не ваша проблема.
Проблема в том, что вы добавляете levelMaker и personMover прямо в mainPane без каких-либо ограничений.Тогда они снесут все, что вы установили для ЦЕНТРА...в данном случае ранее установленный gameScrollPane.
Вот почему вы видите это СЕВЕР, а не ЦЕНТР.