2014-12-17 1 views
-1

Учитывая такие коды:Всплывающие окна Swing, как с опцией и TextField

Object[] possibilities = {"ham", "spam", "yam"}; 
String s = (String)JOptionPane.showInputDialog(
       frame, 
       "Complete the sentence:\n" 
       + "\"Green eggs and...\"", 
       "Customized Dialog", 
       JOptionPane.PLAIN_MESSAGE, 
       icon, 
       possibilities, 
       "ham"); 

enter image description here

Вы можете видеть, что это всплывающее окно с опциями. Однако могу ли я иметь JTextField параллельно с этим? Поэтому я могу получить входы как от option, так и от text field.

ответ

3

В кружным путем, да ...

Breakfast

JPanel fields = new JPanel(new GridLayout(2, 1)); 
JTextField field = new JTextField(10); 
JComboBox<String> comboBox = new JComboBox<>(new String[]{"ham", "spam", "yam"}); 

fields.add(field); 
fields.add(comboBox); 

int result = JOptionPane.showConfirmDialog(null, fields, "Breakfast", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); 
switch (result) { 
    case JOptionPane.OK_OPTION: 
     // Process the results... 
     break; 
} 

Люди либо забывают или не понимают, что если вы передаете JComponent к JOptionPane в качестве параметра message, он будет добавляется к JOptionPane, что делает его действительно гибким и мощным

+0

Это выглядит круто. Можете ли вы внести небольшое изменение, чтобы пользователь мог либо ввести текст в поле «textfield», либо выбрать «comboBox»? Установите другой, который не может быть установлен, если один из них имеет вход или выбран. – byteBiter

+0

Да, вы могли бы это сделать – MadProgrammer

+0

Можете ли вы изменить коды? Я приму его, когда он сработает. T – byteBiter