Swing: установить фиксированный размер окна для JDialog
пробовал setPrefferedSize и метод setsize методы, но диалоговое окно по-прежнему открывается с минимальным размером.
private void method() {
commandDialog.setPreferredSize(new Dimension(100,100));
- - -
- - - //Components added to dialogPanel
commandDialog.add(dialogPanel);
// Tried this as well: commandDialog.setSize(40, 40);
commandDialog.validate();
commandDialog.setVisible(true);
}
2 ответов
Не забудьте позвонить pack()
в диалоговом окне перед setVisible(true)
.
кроме того, многие здесь рекомендуют вместо установки preferredSize диалогового окна, переопределяя его или его панель содержимого getPreferredSize()
метод как более чистый и безопасный способ иметь его размер правильно.
редактировать
Хольгер написал:
переопределение getPreferredSize() не лучше, если оно просто используется для возврата той же константы размер.
Я думаю, что мы все согласны, что имея getPreferredSize()
возврат немого постоянного размера обычно следует избегать (хотя это стабильный). Большую часть времени я избегаю установки size/preferredSize или переопределения getPreferredSize, а скорее стараюсь иметь мои компоненты и их собственные предпочтительные размеры, а также менеджеры макетов сами по себе, что снова инициируется pack()
метод. Иногда мне нужно будет взять более активный рулон в попытке установить размер компонента, например, если мне нужно изменить размер компонента на фоновое изображение, а затем я переопределю getPreferredSize()
и используйте размеры изображения для возвращаемого измерения или используйте какой-либо тип логики программы, чтобы помочь выяснить лучший размер. Но опять же мы все можем согласиться с тем, что чем меньше вы фуц с этим, тем лучше.
Изменить 2
Хольгер написал:
... но вопрос в JDialog, и диалоги никогда не адаптируются сами к их предпочитаемому размеру автоматически.
опять же, они и все окна верхнего уровня делать, когда вы называете pack()
на них. Вот почему я рекомендую это, и почему это был мой основной ответ на его вопрос.