Как обрабатывать негабаритный JDialog

#java #swing #jscrollpane #jdialog #scrollpane

#java #качать #jscrollpane #jdialog #область прокрутки

Вопрос:

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

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

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

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

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

слишком большой диалог

Комментарии:

1. Используйте JScrollPane Luke!

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

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

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

5. «Просто чтобы устранить возможную путаницу» , кому вы отвечаете? Совет: добавьте @SergiyMedvynskyy (или кого угодно, @ важно), чтобы уведомить пользователя о новом комментарии.

Ответ №1:

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

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

Комментарии:

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