JScrollPane не показывает, является ли ограничение BorderLayout CENTER?

StackOverflow https://stackoverflow.com/questions/2003030

Вопрос

Некоторое время занимаюсь разработкой игры и сейчас работаю над графическим интерфейсом или, по крайней мере, пытаюсь это сделать.У меня была серьезная проблема: я не мог изменить размер кадра (без проблем), так как я не очень хорошо разбирался в менеджерах макетов.Спустя несколько проектов, пришло время вернуться и поработать над игрой, и я столкнулся с проблемой...

Базовый макет основного фрейма — mainPane, содержащий одну gameScrollPane и одну controlPanel.Панель прокрутки — это панель прокрутки, а панель управления — обычная панель.Панель прокрутки содержит основную игровую панель.

Поскольку я хотел, чтобы панель прокрутки занимала большую часть экрана, а панель управления занимала небольшую нижнюю область, почти так же, как во многих играх, подобных Sim, поэтому выбрал макет Border для основной панели.Я добавил панель прокрутки и установил ограничения ЦЕНТР, а панель управления добавила ограничения ЮГ.Панель прокрутки не отображалась, поэтому я пробовал разные ограничения, и кажется, что только когда я устанавливаю ограничение панели прокрутки на север, она вообще отображается.

Чтобы продемонстрировать это, я создал небольшое видео...http://screenjel.ly/q5RjczwZjH8

Как видите, когда я меняю значение СЕВЕР на ЦЕНТР и запускаю заново, его как будто нет!

Бонусные баллы для всех, кто ясно видит вторую проблему, о которой я могу задать еще один вопрос после того, как эта проблема будет решена!

Я благодарю вас за ваше время, чтобы прочитать это.

Заранее спасибо за любые идеи и мысли :)

Рел

Это было полезно?

Решение

У меня не получается показать видео.Это буферизация длилась целую вечность.

Я предполагаю, что полоса прокрутки фактически заполняет центр;это просто ваша игровая панель, которая не отображается.

Ваша игровая панель должна возвращать разумные значения для getPreferredSize().

Обновлять

Еще одна вещь, которую вы можете захотеть сделать, — это реализовать на игровой панели Scrollable интерфейс.Затем вы можете переопределить getScrollableTracksViewportWidth и ...height вернуться true поэтому ваша панель будет соответствовать размерам панели прокрутки.

Другие советы

Если бы вы для начала опубликовали какой-то код, вы могли бы получить очень быстрый ответ.К счастью, вы разместили в комментариях ссылку на другой ответ.

Функция setContentPane() выглядит странно, особенно после того, как с ней были сделаны некоторые вещи, которые затем будут уничтожены.Однако это не ваша проблема.

Проблема в том, что вы добавляете levelMaker и personMover прямо в mainPane без каких-либо ограничений.Тогда они снесут все, что вы установили для ЦЕНТРА...в данном случае ранее установленный gameScrollPane.

Вот почему вы видите это СЕВЕР, а не ЦЕНТР.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top