showinputdialog opciones lista hacer ejemplos desplegable con como java swing popup jcombobox joptionpane

opciones - lista joptionpane java



GUI simple de Java como ventana emergente y menĂº desplegable (3)

Si desea crear una GUI Swing, usar un IDE como NetBeans le brinda la simplicidad de usar un diseñador GUI WYSIWYG , de modo que puede simplemente arrastrar y soltar sus elementos GUI en su lugar, y luego agregar su código lógico alrededor del código GUI que NetBeans salidas.

Ciertamente no es algo en lo que confiar para "construir la interfaz gráfica de usuario para usted", pero sí hace un gran trabajo al establecer las bases para que usted pueda trabajar. También puede aprender mucho sobre Swing simplemente leyendo y trabajando con el código que NetBeans genera para la GUI.

Me parece un gran acelerador para empezar a diseñar aplicaciones Swing.

Nunca tuve que escribir GUI en Java. Esta vez también puedo omitirlo y usar args como UI (interfaz de usuario). Pero me pregunto si existe una forma simple de crear una pequeña GUI para permitirle al usuario seleccionar una de las opciones. En otras palabras, para implementar la función askUser() donde el usuario puede seleccionar desde un menú desplegable y presionar "ok". Dedico algo de tiempo a aprender este tema, pero ni siquiera estoy seguro de saber qué tipo de GUI necesito para esta tarea. JFrame? JPanel? Jmenu? Gracias.

Aquí hay un ejemplo de la función deseada.

package trygui; public class Main { public static void main(String[] args) { String[] choices = new String[]{"cats", "dogs"}; int choice = askUser(choices); System.out.println("selected: " + choices[choice]); } static int askUser(String[] choices) { // create pop-up dialog return 0; } }

Actualización : uso Netbeans, si esto puede hacer la diferencia.


Después de preguntar, encontré esta solución. Para hacerlo más simple, askUser() devuelve String .

package trygui; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { String[] choices = new String[]{"cats", "dogs"}; String choice = askUser(choices); System.out.println("selected: " + choice); } static String askUser(String[] choices) { String s = (String) JOptionPane.showInputDialog( null, "make your choice", "Try GUI", JOptionPane.PLAIN_MESSAGE, null, choices, choices[0]); return s; } }


La opción más simple sería usar la API JOptionPane

public class TestOptionPane03 { public static void main(String[] args) { new TestOptionPane03(); } public TestOptionPane03() { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { } JPanel panel = new JPanel(); panel.add(new JLabel("Please make a selection:")); DefaultComboBoxModel model = new DefaultComboBoxModel(); model.addElement("Chocolate"); model.addElement("Strewberry"); model.addElement("Vanilla"); JComboBox comboBox = new JComboBox(model); panel.add(comboBox); int result = JOptionPane.showConfirmDialog(null, panel, "Flavor", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); switch (result) { case JOptionPane.OK_OPTION: System.out.println("You selected " + comboBox.getSelectedItem()); break; } } }); } }

Puede obtener más información leyendo en How to Make Dialogs

ACTUALIZADO con comentarios

public class TestOptionPane03 { public static void main(String[] args) { String choice = ask("Chocolate", "Strewberry", "Vanilla"); System.out.println("You choose " + choice); } public static String ask(final String... values) { String result = null; if (EventQueue.isDispatchThread()) { JPanel panel = new JPanel(); panel.add(new JLabel("Please make a selection:")); DefaultComboBoxModel model = new DefaultComboBoxModel(); for (String value : values) { model.addElement(value); } JComboBox comboBox = new JComboBox(model); panel.add(comboBox); int iResult = JOptionPane.showConfirmDialog(null, panel, "Flavor", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); switch (iResult) { case JOptionPane.OK_OPTION: result = (String) comboBox.getSelectedItem(); break; } } else { Response response = new Response(values); try { SwingUtilities.invokeAndWait(response); result = response.getResponse(); } catch (InterruptedException | InvocationTargetException ex) { ex.printStackTrace(); } } return result; } public static class Response implements Runnable { private String[] values; private String response; public Response(String... values) { this.values = values; } @Override public void run() { response = ask(values); } public String getResponse() { return response; } } }