Как справиться с негабаритным JDialog

Я разрабатываю JDialog, который будет состоять из трех разделов, один над другим: общая информация о клиенте, список адресов клиентов и список заказов.

Список адресов клиентов может стать произвольно большим, и это приведет к тому, что диалоговое окно вырастет за пределы экрана.

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

Это требует панели прокрутки. Но мне пришлось бы установить предпочтительный размер диалогового окна, чтобы воспользоваться им, а определение размера для него зависит от разрешения экрана. Я не уверен, как это сделать.

Как мне справиться с этим сценарием?

Как справиться с негабаритным JDialog

Используйте JScrollPane Люка!

Sergiy Medvynskyy 12.04.2019 14:16

@SergiyMedvynskyy Я сделал, и это не сработало. Мне нужно заранее определить размеры диалогового окна, и я не знаю, как это сделать. Спасибо за подсказку.

Piovezan 12.04.2019 14:23

Лучший подход к этому, чем угадывание необходимых размеров, — отобразить результаты в JList и вызвать метод setVisibleRowCount(int). (С JScrollPane, как предложил @SergiyMedvynskyy.)

Andrew Thompson 12.04.2019 14:53

Просто чтобы устранить возможную путаницу, я использую JScrollPane, и он работает после ответа @IvanKukic. Я подумаю об использовании JList с setVisibleRowCount(int). Спасибо.

Piovezan 12.04.2019 15:27
«Просто чтобы прояснить возможную путаницу» Кому вы отвечаете? Совет: добавьте @SergiyMedvynskyy (или кого угодно, важно @) в уведомлять человека нового комментария.
Andrew Thompson 12.04.2019 16:23

@AndrewThompson Извините, я изначально обращался к вам (выбор для JList), но это началось просто как общий комментарий с намерением прояснить ситуацию для тех, кто читает этот вопрос.

Piovezan 12.04.2019 16:30

@SergiyMedvynskyy Я использую JScrollPane. Сначала это не сработало, но после вызова setPreferredSize(), передающего часть разрешения экрана, это сработало. Спасибо за совет.

Piovezan 12.04.2019 16:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во-первых, вы можете использовать Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();, чтобы получить размер экрана, а затем пропорционально изменить размер диалога (и поместить содержимое в JScrollPane).

Во-вторых, я бы предложил добавить что-то вроде сворачивания элементов, чтобы вы видели только те, которые вам действительно интересны.

Спасибо! Я добавил это раньше pack() и это сработало.

Piovezan 12.04.2019 14:40

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