#java #swing #jscrollpane #jdialog #scrollpane
#java #качать #jscrollpane #jdialog #область прокрутки
Вопрос:
Я разрабатываю JDialog
файл, который будет состоять из трех разделов, один поверх другого: общая информация о клиенте, список адресов клиентов и список заказов.
Список адресов клиентов может вырасти сколь угодно большим, и это приводит к тому, что диалоговое окно увеличивается за пределы высоты экрана.
Таким образом, вызов pack()
перед отображением не работает, потому что упакованная высота диалогового окна все еще слишком велика для высоты экрана.
Это вызывает панель прокрутки. Но мне пришлось бы установить предпочтительный размер диалогового окна, чтобы воспользоваться его преимуществами, и определение его размера зависит от разрешения дисплея. Я не уверен, как это сделать.
Как я должен справиться с этим сценарием?
Комментарии:
1. Используйте
JScrollPane
Luke!2. @SergiyMedvynskyy я сделал, и это не сработало. Мне нужно заранее определить размеры для диалогового окна, и я не уверен, как это сделать. Спасибо за подсказку.
3. Лучший подход к этому, чем угадывание необходимых размеров, заключается в отображении результатов в a
JList
и вызовеsetVisibleRowCount(int)
метода. (С aJScrollPane
, как предложил @SergiyMedvynskyy.)4. Просто чтобы устранить возможную путаницу, я использую
JScrollPane
, и он работает после ответа @IvanKukic. Я рассмотрю возможность использованияJList
withsetVisibleRowCount(int)
. Спасибо.5. «Просто чтобы устранить возможную путаницу» , кому вы отвечаете? Совет: добавьте @SergiyMedvynskyy (или кого угодно,
@
важно), чтобы уведомить пользователя о новом комментарии.
Ответ №1:
Во-первых, вы можете использовать Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
, чтобы получить размер экрана, а затем пропорционально увеличить размер диалогового окна (и поместить содержимое в a JScrollPane
).
Во-вторых, я бы предложил добавить какой-то коллапс для элементов, чтобы вы видели только те, которые вас действительно интересуют.
Комментарии:
1. Спасибо! Я добавлял его раньше
pack()
, и он работал.