Как создать JOptionPane с несколькими вариантами списка и извлечь все варианты?

#java #swing #jframe #joptionpane

#Ява #качать #jframe #joptionpane

Вопрос:

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

В приведенном ниже коде показан MRE, в котором я создаю две разные области JOptionPanes с выбором списка и извлекаю выбор из каждой. По сути, я пытаюсь совместить то и другое.

  import javax.swing.JFrame; import javax.swing.JOptionPane;  public class JOptionPaneTest {   public static void main(String[] a) {    JFrame frame = new JFrame();  String bigList[] = new String[30];  String smallList[] = new String[5];     for (int i = 0; i lt; bigList.length; i  ) {  bigList[i] = Integer.toString(i);  }    for (int i = 0; i lt; smallList.length; i  ) {  smallList[i] = Integer.toString(i);  }   String choice = (String) JOptionPane.showInputDialog(frame, "Pick the first number", "Number 1", JOptionPane.QUESTION_MESSAGE,  null, bigList, "Titan");    String choice2 = (String) JOptionPane.showInputDialog(frame, "Pick the second number", "Number 2", JOptionPane.QUESTION_MESSAGE,  null, smallList, "Titan");    System.out.println(choice);  System.out.println(choice2);   }  }    

Как выглядит один из них: введите описание изображения здесь

Ответ №1:

JOptionPane на самом деле он очень гибкий. Вы можете создать контейнер, содержащий любое количество компонентов, а затем использовать JOptionPane его, например, для отображения…

введите описание изображения здесь

 import java.awt.EventQueue; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel;  public class Test {   public static void main(String[] args) {  new Test();  }   public Test() {  EventQueue.invokeLater(new Runnable() {  @Override  public void run() {  String bigList[] = new String[30];  String smallList[] = new String[5];   for (int i = 0; i lt; bigList.length; i  ) {  bigList[i] = Integer.toString(i);  }   for (int i = 0; i lt; smallList.length; i  ) {  smallList[i] = Integer.toString(i);  }   JComboBoxlt;Stringgt; bigListComboBox = new JComboBoxlt;gt;(new DefaultComboBoxModellt;Stringgt;(bigList));  JComboBoxlt;Stringgt; smallListComboBox = new JComboBoxlt;gt;(new DefaultComboBoxModellt;Stringgt;(smallList));   JPanel panel = new JPanel(new GridBagLayout());  GridBagConstraints gbc = new GridBagConstraints();  gbc.gridx = 0;  gbc.gridy = 0;  gbc.anchor = GridBagConstraints.LINE_END;  gbc.insets = new Insets(4, 4, 4, 4);  panel.add(new JLabel("Pick the first number"), gbc);  gbc.gridy  ;  panel.add(new JLabel("Pick the second number"), gbc);   gbc.gridx  ;  gbc.gridy = 0;  gbc.anchor = GridBagConstraints.LINE_START;  panel.add(bigListComboBox, gbc);  gbc.gridy  ;  panel.add(smallListComboBox, gbc);   JOptionPane.showMessageDialog(null, panel, "Pick two numbers", JOptionPane.QUESTION_MESSAGE);   System.out.println("First number = "   bigListComboBox.getSelectedItem());  System.out.println("Second number = "   smallListComboBox.getSelectedItem());  }  });  } }  

Комментарии:

1. Очень круто! Сейчас я почитаю о JComboBox. Спасибо за помощь!