2015-04-30 3 views
2

Я создал JDialog, чтобы сохранить окно модальным, чтобы остановить обработку приложения через определенную точку. Однако, когда я использую этот метод, окно появляется, но размер не устанавливается в 400 400, он выглядит так, как будто он не имеет размера.Размер JDialog не отображается

enter image description here

public class test { 

public static void main(String[] args) { 
    JFrame theDog = new JFrame(); 
    JButton theButton = new JButton("hello"); 
    //theDog.setSize(200, 200); 
    JDialog thadialog = new JDialog(theDog,"theTitle", Dialog.ModalityType.APPLICATION_MODAL); 
    thadialog.setVisible(true); 
    thadialog.setSize(400,400); 
    thadialog.pack(); 


    System.out.println("hello"); 
} 
} 

Как сделать JDialog, по всей видимости, имеют размер 400,400?

+0

Положите 'setVisible' после' pack() '.Try' dialog.setPreferredSize' –

+0

удалил пакет и добавил: thadialog.setPreferredSize (новый размер (400 400)); .... все еще ничего – king

ответ

4

Функция pack() сообщает окну, чтобы упаковать себя как можно меньше, чтобы соответствовать его компонентам. Это различные способ установить размер, чем вызов функции setSize().

Позвонив как , так и pack(), в основном вы говорите: «Сначала установите свой размер на 400x400, а затем установите свой размер как можно меньше».

Другими словами, если вы хотите, чтобы ваше окно было определенного размера, тогда придерживайтесь функции setSize(). Избавьтесь от звонка до pack().

Редактирование. Вы также устанавливаете диалоговое окно видимым, прежде чем устанавливать его размер. Поскольку ваш диалог блокирует текущий поток, вы даже не добираетесь до функции setSize() до после диалог закрыт. Переведите звонок до setSize() до до звонок по номеру setVisible().

+0

i все готово пробовал это без упаковки, я добавил пакет, потому что setSize не работал. Я просто прокомментировал это, и он все еще не отображался. – king

+0

@simon. Вы устанавливаете свое диалоговое окно, прежде чем устанавливать размер. Поскольку диалоговое окно блокирует поток, вы никогда не дойдете до функции setSize() до тех пор, пока диалог не закроется. Переместите вызов setSize() выше вызова setVisible(). –

+0

спасибо .. это сработал. Знаете ли вы, почему я не могу добавить элементы в диалог? если я делаю thaDog.add (theButton); , он не отображает кнопку на экране? – king

Смежные вопросы