Я разрабатываю JDialog, который будет состоять из трех разделов, один над другим: общая информация о клиенте, список адресов клиентов и список заказов.
Список адресов клиентов может стать произвольно большим, и это приведет к тому, что диалоговое окно вырастет за пределы экрана.
Таким образом, вызов pack() перед его отображением не работает, потому что высота упакованного диалога все еще слишком велика для высоты экрана.
Это требует панели прокрутки. Но мне пришлось бы установить предпочтительный размер диалогового окна, чтобы воспользоваться им, а определение размера для него зависит от разрешения экрана. Я не уверен, как это сделать.
Как мне справиться с этим сценарием?
@SergiyMedvynskyy Я сделал, и это не сработало. Мне нужно заранее определить размеры диалогового окна, и я не знаю, как это сделать. Спасибо за подсказку.
Лучший подход к этому, чем угадывание необходимых размеров, — отобразить результаты в JList и вызвать метод setVisibleRowCount(int). (С JScrollPane, как предложил @SergiyMedvynskyy.)
Просто чтобы устранить возможную путаницу, я использую JScrollPane, и он работает после ответа @IvanKukic. Я подумаю об использовании JList с setVisibleRowCount(int). Спасибо.
@) в уведомлять человека нового комментария.
@AndrewThompson Извините, я изначально обращался к вам (выбор для JList), но это началось просто как общий комментарий с намерением прояснить ситуацию для тех, кто читает этот вопрос.
@SergiyMedvynskyy Я использую JScrollPane. Сначала это не сработало, но после вызова setPreferredSize(), передающего часть разрешения экрана, это сработало. Спасибо за совет.




Во-первых, вы можете использовать Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();, чтобы получить размер экрана, а затем пропорционально изменить размер диалога (и поместить содержимое в JScrollPane).
Во-вторых, я бы предложил добавить что-то вроде сворачивания элементов, чтобы вы видели только те, которые вам действительно интересны.
Спасибо! Я добавил это раньше pack() и это сработало.
Используйте
JScrollPaneЛюка!