JScrollPane не показывает, является ли ограничение BorderLayout CENTER? - PullRequest
1 голос
/ 05 января 2010

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

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

Поскольку я хотел, чтобы панель прокрутки занимала большую часть экрана, панель управления занимала небольшую нижнюю область, почти так же, как многие симы, как в играх, поэтомувыбрал макет границы для главной панели.Я добавил панель прокрутки и установил ограничения CENTER и добавили панель управления и константы SOUTH.Это не показывало панель прокрутки, поэтому я попытался попробовать другие ограничения, и кажется, что только когда я устанавливаю ограничение панели прокрутки на Север, оно отображается вообще.

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

Как вы можете видеть, когда я меняю значение СЕВЕР на CENTER и снова запускаю, это как будто его там нет!

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

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

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

Rel

Ответы [ 2 ]

3 голосов
/ 05 января 2010

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

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

Проблема в том, что вы добавляете levelMaker и personMover прямо в mainPane без каких-либо ограничений. Затем они сдувают все, что вы установили для CENTER ... в данном случае ранее установленную gameScrollPane.

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

1 голос
/ 05 января 2010

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

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

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

Обновление

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

...