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í:
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 unJPanel
, que luego se puede agregar alJOptionPane
usando el métodooptionPane.add()
.Aquí hay un ejemplo de implementación:
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.