es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo crear un JOptionPane con selecciones de lista múltiple y extraer todas las opciones?

Estoy interesado en crear un JOptionPane o cualquier ventana emergente interactiva que contenga múltiples selecciones de listas. También deseo extraer las selecciones que hizo el usuario.

El código a continuación muestra un MRE donde genero dos JOptionPane diferentes con selecciones de listas y extraigo la elección de cada uno. Básicamente, estoy tratando de combinar los dos.


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 < bigList.length; i++) { bigList[i] = Integer.toString(i); } for (int i = 0; i < smallList.length; i++) { smallList[i] = Integer.toString(i); } String choice = (String) JOptionPane.showInputDialog(frame, "Selecciona el primer número", "Número 1", JOptionPane.QUESTION_MESSAGE, null, bigList, "Titan"); String choice2 = (String) JOptionPane.showInputDialog(frame, "Selecciona el segundo número", "Número 2", JOptionPane.QUESTION_MESSAGE, null, smallList, "Titan"); System.out.println(choice); System.out.println(choice2); } }

Lo que uno de ellos se ve así:
Imagen

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para crear un JOptionPane con varias selecciones de lista y extraer las elecciones del usuario, puedes usar el método JOptionPane.showOptionDialog(). Este método te permite especificar las opciones a mostrar en una lista y devuelve el índice de la(s) opción(es) seleccionada(s).

    Para mostrar varias listas, puedes crear un arreglo de objetos JList y agregarlos a un JPanel, que luego se puede agregar al JOptionPane usando el método optionPane.add().

    Aquí hay un ejemplo de implementación:

    import javax.swing.*;
    import java.awt.*;
    import java.util.*;
    
    public class MultiListOptionPane {
    
        public static void main(String[] args) {
    
            JFrame frame = new JFrame();
            String[] list1 = {"Opción 1", "Opción 2", "Opción 3"};
            String[] list2 = {"Elección A", "Elección B", "Elección C", "Elección D"};
    
            // crear las listas
            JList<string> jList1 = new JList<>(list1);
            JList<string> jList2 = new JList<>(list2);
    
            // crear un panel para contener las listas
            JPanel panel = new JPanel(new GridLayout(0, 1));
            panel.add(jList1);
            panel.add(jList2);
    
            // mostrar el JOptionPane con el panel de listas
            int result = JOptionPane.showOptionDialog(frame, panel, "Seleccionar opciones",
                    JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null,
                    new String[] {"OK", "Cancelar"}, JOptionPane.OK_OPTION);
    
            // obtener los índices seleccionados de cada lista
            if (result == 0) {
                String selected1 = "", selected2 = "";
                int[] indices1 = jList1.getSelectedIndices();
                int[] indices2 = jList2.getSelectedIndices();
    
                for (int i : indices1) {
                    selected1 += list1[i] + ", ";
                }
                for (int i : indices2) {
                    selected2 += list2[i] + ", ";
                }
    
                // eliminar la última coma y espacio
                selected1 = selected1.substring(0, selected1.length() - 2);
                selected2 = selected2.substring(0, selected2.length() - 2);
    
                // mostrar las selecciones
                System.out.println("Seleccionado de la lista 1: " + selected1);
                System.out.println("Seleccionado de la lista 2: " + selected2);
            }
        }
    }
    

    Este código crea dos listas, las agrega a un panel y muestra el panel en un JOptionPane con botones de OK y Cancelar. Si el usuario selecciona OK, el código recupera los índices seleccionados de cada lista y los usa para crear una lista separada por comas de elementos seleccionados, que se muestra en la consola.

Comments are closed.