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.

¿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}}

Tags:  , ,

Answer

  1. Avatar for 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 utilizar null 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:

    Object[] options = {null, "Opción 1", null, null, null, null, "Opción 2"};
    int choice = JOptionPane.showOptionDialog(null, "Elige tu aventura", "Aventura", 
        JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0]);
    

    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 sentencia switch para ejecutar la lógica apropiada. Por ejemplo:

    switch (choice) {
        case 2:
            // Código para la Opción 1
            break;
        case 7:
            // Código para la Opción 2
            break;
        // Casos para otros botones
    }
    

    Alternativamente, puedes utilizar una sentencia if con las constantes JOptionPane.YES_OPTION, JOptionPane.NO_OPTION, etc. para manejar diferentes clics de botones. Por ejemplo:

    int result = JOptionPane.showConfirmDialog(null, "¿Estás seguro?", "Confirmar", JOptionPane.YES_NO_OPTION);
    if (result == JOptionPane.YES_OPTION) {
        // Código para el botón "Sí"
    } else if (result == JOptionPane.NO_OPTION) {
        // Código para el botón "No"
    }
    

Comments are closed.