#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. Спасибо за помощь!