2012-10-04 5 views
1

Итак, мой вопрос: как мне сделать так, чтобы основной класс не запускался, пока другой класс ждет ввода от пользователя.Два JFrames работают одновременно

Может быть, я думаю, это неправильно, так пожалуйста, помогите мне разобраться в мои мысли :)

Вот небольшой пример/сниппет.

Главный класс работает под управлением JFrame, а затем открывает другой JFrame, запрашивающий пользователя для ввода , другой JFrame находится внутри класса AddEditWindow.

AddEditWindow temp = new AddEditWindow();

info[counter+1] = temp.newEditedInfo;

infoArray.add(info[counter+1]);

Так довольно много, что я спрашиваю, как мне сделать так, чтобы она не достигает 2-й строки кода, пока пользователь наконец, завершает ввод всех.

Обработчик ActionListener/Event для AddEditWindow предназначен только для кнопки.

Так я жду кнопку нужно нажать, (так что переменная внутри класса AddEditWindow инициализации), а затем для кода продолжать

info[counter+1] = temp.newEditedInfo;

Надеюсь, я объяснил это достаточно хорошо ,

Не знаю, думаю ли я об этом неправильно или что: |

+0

насчет модального диалога ...? – shan

+0

Я бы, но я не совсем уверен, как бы это выглядело так: http://i46.tinypic.com/28l6e10.png –

+0

Вы можете расширить свой класс до 'JDialog'. \ – shan

ответ

4

Для простоты, попробовать что-то вроде ...

int result = JOptionPane.showConfirmDialog(null, "Can I ask you a question", "Quesion", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); 
switch (result) { 
    case JOptionPane.YES_OPTION: 
     //... 
     break; 
    case JOptionPane.NO_OPTION: 
     //... 
     break; 
} 

enter image description here

The JOptionPane очень мощный компонент. Если поставить компонент вместо строки, он будет отображать компонент ...

Например ...

enter image description here

JPanel panel = new JPanel(new GridLayout(0, 2)); 
panel.add(new JLabel("Name")); 
panel.add(new JLabel("Last")); 
panel.add(new JTextField("Jason")); 
panel.add(new JTextField("Cardanas")); 
panel.add(new JLabel("Phone")); 
panel.add(new JLabel("Email")); 
panel.add(new JTextField("333")); 
panel.add(new JTextField("X")); 
panel.add(new JLabel("PID")); 
panel.add(new JLabel("Donation")); 
panel.add(new JTextField("X")); 
panel.add(new JTextField("0")); 
panel.add(new JLabel("Membership")); 
panel.add(new JLabel("Points")); 
panel.add(new JTextField("false")); 
panel.add(new JTextField("0")); 

int result = JOptionPane.showConfirmDialog(null, panel, "Quesion", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); 
switch (result) { 
    case JOptionPane.OK_OPTION: 
     //... 
     break; 
    case JOptionPane.CANCEL_OPTION: 
     //... 
     break; 
} 
+0

Большое вам спасибо, я серьезно не знал, что вы даже можете это сделать. Amazing. –

2

Я думаю, вы спрашиваете о диалоге Modal. Проверить this

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