Realizar acción al elegir item de choice (Java Swing)

publicado por: Anonymous

Pretendo crear en un JDialog un objeto choice donde el usuario pueda elegir “Si” o “No”. Si se elige “Si”, se realizará una acción determinada; en cambio, si se elige “No”, se hará otra. He puesto una opción “—” como predeterminada antes de que el usuario elija otra.

Mi pregunta es, cual seria la forma más eficiente de hacer estas acciones? He estado mirando los metodos de la clase Choice pero no me aclaro cual sería el más indicado..

El código que tengo es el siguiente, si alguien puede hecharme una mano..

package Visual;

import java.awt.BorderLayout;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import Jugador.Jugador;

import javax.swing.JLabel;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JTextField;
import java.awt.Choice;

public class EditarApodo extends JDialog {

    private final JPanel contentPanel = new JPanel();
    private JTextField cajaAlias;
    private JLabel etiquetaAlias;
    // private JButton botonDialogo;  no se utiliza de momento
    private Jugador jug1;
    private Choice eleccion;
    private JLabel etiquetaCambiar;

    /**
     * Constructor
     */
    public EditarApodo(VentanaJuego v3){                                    //Parámetro para acceder a v3 desde v2


        setTitle("Editar apodo del juego");
        setBounds(100, 100, 450, 300);
        getContentPane().setLayout(null);                                   //Absolute layout

        //Etiqueta 
        etiquetaAlias = new JLabel("Se te ha asignado el alias:");
        etiquetaAlias.setFont(new Font("Verdana", Font.PLAIN, 16));
        etiquetaAlias.setBounds(22, 26, 375, 25);
        getContentPane().add(etiquetaAlias);

        //Boton
        //botonDialogo = new JButton("Continuar");
        //botonDialogo.setBounds(300, 217, 97, 25);
        //getContentPane().add(botonDialogo);

        //Caja para el alias
        cajaAlias = new JTextField();
        cajaAlias.setFont(new Font("Verdana", Font.PLAIN, 15));
        cajaAlias.setBounds(262, 29, 116, 22);
        getContentPane().add(cajaAlias);
        cajaAlias.setColumns(10);
        contentPanel.setLayout(new FlowLayout());
        contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
        cajaAlias.setEditable(false);

        //Menu para elegir si se quiere o no editar el alias
        eleccion = new Choice();
        eleccion.setBounds(260, 128, 48, 22);
        getContentPane().add(eleccion);
        eleccion.add("--");
        eleccion.add("Si");
        eleccion.add("No");
        eleccion.select("--");                          //Opción por defecto

        //Etiqueta
        etiquetaCambiar = new JLabel("u00BFQuieres cambiarlo?");
        etiquetaCambiar.setFont(new Font("Verdana", Font.PLAIN, 14));
        etiquetaCambiar.setBounds(71, 128, 162, 22);
        getContentPane().add(etiquetaCambiar);

El botón iba a ponerlo en un principio pero si es posible realizar la acción nada más elegir Si o No no lo voy a utilizar.

solución

Hay que agregar un Listener (oyente):

eleccion.addItemListener(new ItemListener(){
  public void itemStateChanged(ItemEvent ie){

    cajaAlias.setText("Ha seleccionado: "+c.getSelectedItem());
  }
});

Aunque si está trabajando con swing debería utilizar JComboBox, ya que awt es la primera “version” por decirlo así de GUI pero luego vino swing con muchas mejoras.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *