¿Existe una forma de que los botones de JOptionPane tengan números no consecutivos?
Quiero hacer un programa en Java usando JOptionPane que sea esencialmente un tipo de aventura de selección propia. Esperaba que pudiera ser simple y usar solo el caso y el switch. Sin embargo, eso significaría que necesito botones que se almacenarían como valores no consecutivos. Para que el primer botón se pueda almacenar como el entero 2 y el segundo botón se pueda almacenar como el entero 7. Sé que es posible hacer que los enteros comiencen en un número diferente que no sea 0, pero deben ser consecutivos. De lo contrario, ¿puedes hacer el if (option == JOptionPane.NO_OPTION) con opciones personalizadas y/o caso y switch?
Aquí hay un ejemplo:
option = JOptionPane.showOptionDialog (“hace una pregunta”);
while (playThis == 1){
switch (option){
case 1:
option = JOptionPane.showOptionDialog (“resultado de preguntas y hace una pregunta”);\quiero que esto tenga opciones iguales a digamos 1 o 5
break;
case 2:
option = JOptionPane.showOptionDialog (“resultado de preguntas y hace una pregunta”);\quiero que esto tenga opciones iguales a digamos 2, 3 o 4
break;
// y así sucesivamente}}
davy.ai
Sí, es posible almacenar valores enteros no consecutivos para los botones en un cuadro de diálogo JOptionPane. Puedes utilizar la versión sobrecargada del método
showOptionDialog
que toma una matriz de objetos, en donde cada objeto representa un botón. En esta matriz, puedes utilizarnull
para los botones que no deseas mostrar, y asignar cualquier valor entero a los botones que deseas rastrear.Por ejemplo, para crear un cuadro de diálogo con dos botones, uno con la etiqueta “Opción 1” y el otro con “Opción 2”, pero con valores enteros de 2 y 7 respectivamente, puedes utilizar el siguiente código:
En este ejemplo, el botón con la etiqueta “Opción 1” tiene un valor entero de 2 y el botón con la etiqueta “Opción 2” tiene un valor entero de 7.
Una vez que hayas almacenado el valor entero del botón seleccionado en la variable
choice
, puedes utilizarlo en una sentenciaswitch
para ejecutar la lógica apropiada. Por ejemplo:Alternativamente, puedes utilizar una sentencia
if
con las constantesJOptionPane.YES_OPTION
,JOptionPane.NO_OPTION
, etc. para manejar diferentes clics de botones. Por ejemplo: