Problemas com eventos JComboBox

9 respostas
F

bom pessoal não to conseguindo resolver um problema com evento no Jcomobobox oq eu quero é que quendo eu selecionar uma opção seja exibido no console qual opção eu escolhi segue o codigo para quem puder ajudar

import java.awt.BorderLayout;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class SorteGrande extends JFrame
{

	private final JButton   sorteio,sair;
	private final JLabel    label;
	public  JComboBox opcao;
	private final JPanel    painelnorte,painelcenter,painelsul;	
	public SorteGrande()
	{
		super ("Sorte Grande v.01")	;
		setLayout(new BorderLayout());
				
		//Tratamento botão sortear com evento 
		sorteio = new JButton("Sortear");
		
		
		//Tratamento botão sair com evento
		sair    = new JButton("Sair");
		sair exit =new sair();
		sair.addActionListener(exit);
		
			
		//tramento  Painel
		painelcenter =new JPanel();
		painelnorte  =new JPanel();
		painelsul    =new JPanel();
		
		//Tratamento do label
		label   =new JLabel("Escolha a opção para gerar o palpite");
		
		//Adicionando paineis
		add(painelnorte,  BorderLayout.NORTH);
		add(painelcenter, BorderLayout.CENTER);
		add(painelsul,    BorderLayout.SOUTH);
		
		//painel nort
		painelnorte.  add(label);
		painelcenter.  add(opcao);
	
		//painel sul
		painelsul.    add(sorteio);
		painelsul.    add(sair);
		pack();
		
				
		 //tratamento do Jcombobox
			//Tratamento JComboBox
		final String escolha[]={"Dupla Sena","Loto Fácil","Loto Mania","Mega Sena","Quina"};
		opcao=new JComboBox(escolha);
		
		
		
		
	     
	      opcao.addItemListener(                            
	         new ItemListener() // classe interna anônima
	         {                                                        
	            // trata evento JComboBox
	            public void itemStateChanged( ItemEvent event )       
	            {                                                     
	               
	              if ( event.getStateChange() == ItemEvent.SELECTED )
	            	  System.out.print("a opção escolhida foi"+ opcao.getSelectedIndex());
	            	        
	            } 
	         } 
	      ); 
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}

    
	public class sair implements ActionListener
{
	public void actionPerformed(ActionEvent e)
	{	
		String opcoes[] = {"Sim","Não"};
		int     opc     = JOptionPane.showOptionDialog(null,"Confirma o encerramento?","Confirmação",JOptionPane.DEFAULT_OPTION,JOptionPane.QUESTION_MESSAGE,null,opcoes,opcoes[1]);
		//
		if ( opc == 0 )
			System.exit(0);
	}
	
}
	


	public static void main(String args[])
	{
	SorteGrande ref = new SorteGrande();
	
	}	
	
	
	
	
}

9 Respostas

Filipe_Portes

Bom dia filipibh!

tente dessa forma:

//criação do combobox.
     Variavel = new javax.swing.JComboBox();
     Variavel.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "opção", "opção2", "opção3", "etc...l" }));

      //pegando os dados
      String box = (String) Variavel.getSelectedItem();

      dessa forma você salva o dado que estiver selecionado na variavel box. 
      agora é so programar a ação que preferir para escrever o conteudo dessa variavel
      pode ser um actionPerformed no proprio comboBox ou em um botão.

      Espero que possa te ajudar!!!!
F
//1º duvida eu tenho nescessariamente que criar um objeto para o array 
//ou posso por exemplo

String array[]={item1,item2,item3};

//2º duvida oq ta acontecendo nesta linha?? oq faz esta classe   
//DefaultComboBoxModel??
   
DefaultComboBoxModel model = newDefaultComboBoxModel(array);

//3º qual a diferença disto
JComboBox box = newJComboBox(model);  

//para isto to perguntando pq no livro do Daitel ta ilustrado         
//como abaixo apesar que nem assim eu consegui fazer funcionar 
// mas é so pra saber mesmo
box=newJComboBox(model);
F

ai galera fiz ai oq vcs sugeriram e continua dando pau desta vez nem ta aparecendo na tela o frame ja tem umas 2 semanas que to apanhando com um negocio simples deste se alguem puder ai consertar o codigo pra min e comentar as modificações so pra min entender agradeço
oq eu quero é que seja escrito na console a opção que for escolhida no JComboBox
desde já agradeço

import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class SorteGrande extends JFrame
{

	private final JButton   sorteio,sair;
	private final JLabel    label;
	public  JComboBox opcao;
	private final JPanel    painelnorte,painelcenter,painelsul;	
	public SorteGrande()
	{
		super ("Sorte Grande v.01")	;
		setLayout(new BorderLayout());
				
		//Tratamento botão sortear com evento 
		sorteio = new JButton("Sortear");
		
		
		//Tratamento botão sair com evento
		sair    = new JButton("Sair");
		sair exit =new sair();
		sair.addActionListener(exit);
		
			
		//tramento  Painel
		painelcenter =new JPanel();
		painelnorte  =new JPanel();
		painelsul    =new JPanel();
		
		//Tratamento do label
		label   =new JLabel("Escolha a opção para gerar o palpite");
		
		//Adicionando paineis
		add(painelnorte,  BorderLayout.NORTH);
		add(painelcenter, BorderLayout.CENTER);
		add(painelsul,    BorderLayout.SOUTH);
		
		//painel nort
		painelnorte.  add(label);
		painelcenter.  add(opcao);
	
		//painel sul
		painelsul.    add(sorteio);
		painelsul.    add(sair);
		pack();
		box.addActionListener(listener);
		
			//Tratamento JComboBox
	//*****esta linha apresenta erro
		String[] array=new String{"Dupla Sena","Loto Fácil","Loto Mania","Mega Sena","Quina"};
		
		//*****erro
		DefaultComboBoxModel model=new DefaultComboBoxModel(array);
		
		//****erro
		JComboBox box=new JComboBox(model);
		
		  //****bloco com  erro
	      ActionListener listener =newActionListener(){
	      	public voidactionPerformed(ActionEvent e)
	      	{
	      		System.out.println(box.getSelectedItem());
	      	}
	      };
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}

    
	public class sair implements ActionListener
{
	public void actionPerformed(ActionEvent e)
	{	
		String opcoes[] = {"Sim","Não"};
		int     opc     = JOptionPane.showOptionDialog(null,"Confirma o encerramento?","Confirmação",JOptionPane.DEFAULT_OPTION,JOptionPane.QUESTION_MESSAGE,null,opcoes,opcoes[1]);
		//
		if ( opc == 0 )
			System.exit(0);
	}
	
}
	


	public static void main(String args[])
	{
	SorteGrande ref = new SorteGrande();
	
	}	

	
}
M

Tente assim:

import java.awt.BorderLayout;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class SorteGrande extends JFrame
{

	private  JButton   sorteio,sair;
	private  JLabel    label;
	public  JComboBox opcao;
	private JPanel    painelnorte,painelcenter,painelsul;	
	public SorteGrande()
	{
		super ("Sorte Grande v.01")	;
		setLayout(new BorderLayout());
				
		//Tratamento botão sortear com evento 
		sorteio = new JButton("Sortear");
		
		
		//Tratamento botão sair com evento
		sair    = new JButton("Sair");
		Sair exit =new Sair();
		sair.addActionListener(exit);
		
			
		//tramento  Painel
		painelcenter =new JPanel();
		painelnorte  =new JPanel();
		painelsul    =new JPanel();
		
		//Tratamento do label
		label   =new JLabel("Escolha a opção para gerar o palpite");
		
				
		 //tratamento do Jcombobox
			//Tratamento JComboBox
		final String escolha[]={"Dupla Sena","Loto Fácil","Loto Mania","Mega Sena","Quina"};
		opcao=new JComboBox(escolha);
			//painel nort
		painelnorte.add(label);
		painelcenter.add(opcao);
		
		
		
	     
	      opcao.addItemListener(                            
	         new ItemListener() // classe interna anônima
	         {                                                        
	            // trata evento JComboBox
	            public void itemStateChanged( ItemEvent event )       
	            {                                                     
	               
	              if ( event.getStateChange() == ItemEvent.SELECTED )
	            	  System.out.print("a opção escolhida foi"+ opcao.getSelectedIndex());
	            	        
	            } 
	         } 
	      ); 
	      	
	      			//painel sul
		painelsul.add(sorteio);
		painelsul.add(sair);
				//Adicionando paineis
		add(painelnorte,  BorderLayout.NORTH);
		add(painelcenter, BorderLayout.CENTER);
		add(painelsul,    BorderLayout.SOUTH);

		pack();

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}

    
	public class Sair implements ActionListener
{
	public void actionPerformed(ActionEvent e)
	{	
		String opcoes[] = {"Sim","Não"};
		int     opc     = JOptionPane.showOptionDialog(null,"Confirma o encerramento?","Confirmação",JOptionPane.DEFAULT_OPTION,JOptionPane.QUESTION_MESSAGE,null,opcoes,opcoes[1]);
		//
		if ( opc == 0 )
			System.exit(0);
	}
	
}
	


	public static void main(String args[])
	{
	SorteGrande ref = new SorteGrande();
	
	}	
	
	
	
	
}
F

bom não testei o codigo ainda mas se tiver como vc comentar as modificações valew!

M

Faça comparações com o seu codigo antigo, houve apenas inversões!!Nenhum valor foi alterado!!

F

olha continua sem funcionar

bom galera agradeço a todos vcs a boa vontade ai em me ajudar,
sem querer ser exigente gostaria que vcs testassem as suas modificações pra ver se funciona ou não pq fuçar eu to fuçando no codigo ja tem alguns dias e nada to precisando da solução do problema!!!
mesmo assim obrigado a todos que tentaram me ajudar ai valew!!

F

bom mexi novamente no codigo e nada de funcionar mas pelo menos so apresenta um erro no
escolha.addActionListener(this)
se alguem ainda não tiver de saco cheio deste topico e quiser me dar uma força ai agradeço

import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class SorteGrande extends JFrame
{

	private final JButton   sorteio,sair;
	private final JLabel    label;
	private final JPanel    painelnorte,painelcenter,painelsul;	
	private final JComboBox combo;
	public SorteGrande()
	{
		super ("Sorte Grande v.01")	;
		setLayout(new BorderLayout());
				
		//Tratamento botão sortear com evento 
		sorteio = new JButton("Sortear");
		
		//tratamento JComboBox
	
		String[] vetor={"Dupla Sena","Loto Fácil","Loto      Mania","Mega Sena","Quina"};
		
	    JComboBox escolha= new JComboBox(vetor);
		
                    //so a linha abaixo que ta dando pau
                      escolha.addActionListener(this);	
	
		//Tratamento botão sair com evento
		sair    = new JButton("Sair");
		sair exit =new sair();
		sair.addActionListener(exit);
		
			
		//tramento  Painel
		painelcenter =new JPanel();
		painelnorte  =new JPanel();
		painelsul    =new JPanel();
		
		//Tratamento do label
		label   =new JLabel("Escolha a opção para gerar o palpite");
		
		//Adicionando paineis
		add(painelnorte,  BorderLayout.NORTH);
		add(painelcenter, BorderLayout.CENTER);
		add(painelsul,    BorderLayout.SOUTH);
		
		//painel nort
		painelnorte.  add(label);
		painelcenter.  add(escolha);
	
		//painel sul
		painelsul.    add(sorteio);
		painelsul.    add(sair);
		pack();
		
		
	   setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}

    //inicio tratamento evento jcombobox
    public void actionPerformed(ActionEvent e){
    
    JComboBox cb=(JComboBox)e.getSource();
    String escolha=(String)cb.getSelectedItem();	
   	System.out.println(escolha);
    }
     
    
    //fim tratamento evento jcombobox
    
    
    
	public class sair implements ActionListener
{
	public void actionPerformed(ActionEvent e)
	{	
		String opcoes[] = {"Sim","Não"};
		int     opc     = JOptionPane.showOptionDialog(null,"Confirma o encerramento?","Confirmação",JOptionPane.DEFAULT_OPTION,JOptionPane.QUESTION_MESSAGE,null,opcoes,opcoes[1]);
		//
		if ( opc == 0 )
			System.exit(0);
	}
	
}
	


	public static void main(String args[])
	{
	
	SorteGrande ref = new SorteGrande();
	
	}	

	
}
Spool
// Criando um array de String´s que representara os itens do JComboBox
String[] array = new String { "Item 1", "Item 2", "Item 3" };

// Criando o modelo para o JComboBox com o array criado acima
DefaultComboBoxModel model = new DefaultComboBoxModel(array);

// Criando o Componente JComboBox com o modelo definido acima
JComboBox box = new JComboBox(model);

/**
 * Voce pode capturar o item selecionado de diversas maneiras,
 * Aqui vou demonstrar o evento ao selecionar o item no proprio JComboBox
 **/
// Criando o ActionListener(existem diversas formas de se fazer isso tambem)
ActionListener listener = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println(box.getSelectedItem());
    }
};

// Adicionando o evento ao selecionar um item
box.addActionListener(listener);
Criado 10 de setembro de 2007
Ultima resposta 10 de set. de 2007
Respostas 9
Participantes 4