ComboBox não seleciona

4 respostas
Elnegritocomar

Boa tarde galera, bom minha dúvida é a seguinte, tenho um combobox que adiciono itens desde um Jtext clicando num botão, ate ai tudo bem ele funciona, clico no combobox e vejo os itens, so que quando quero selecionar um desses itens adicionados não consigo, nao sei que esta errado…deixo meu código embaixo, grato

package lista_2;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Exercicio6 extends JFrame implements ActionListener, KeyListener{
	private DefaultListModel mod = new DefaultListModel();
	private DefaultListModel mod1 = new DefaultListModel();
	JLabel lbl_NomePaciente;
	JTextField txt_NomePaciente;
	JButton btn_AdicionarPaciente;
	JLabel lbl_ListaEspera;
	JList lst_ListaEspera;
	JLabel lbl_NovoMedico;
	JTextField txt_NovoMedico;
	JButton btn_AdicionarMedico;
	JLabel lbl_MedicosDisponiveis;
	JComboBox cmb_MedicosDisponiveis;
	JButton btn_RemoverMedico;
	JButton btn_EncerrarAtendimento;
	JLabel lbl_AtendimentosEncerrados;
	JList lst_ListaAtendimentosEncerrados;
	
		public Exercicio6(){
			setDefaultCloseOperation(EXIT_ON_CLOSE);
			setTitle("Exercicio 6");
			setBounds(0,0,700,450);		
	        setLayout(null);
			setLocationRelativeTo(null);
			
			lbl_NomePaciente=new JLabel("Nome do Paciente: ");
			lbl_NomePaciente.setBounds(20,10,150,20);
			add(lbl_NomePaciente);
			txt_NomePaciente = new JTextField();
			txt_NomePaciente.setBounds(20, 40, 150, 20);
			add(txt_NomePaciente);
			btn_AdicionarPaciente = new JButton("Adicionar Paciente");
			btn_AdicionarPaciente.setBounds(20,70,150,25);
			btn_AdicionarPaciente.addActionListener(this);
			add(btn_AdicionarPaciente);
			lbl_ListaEspera = new JLabel("Lista de espera: ");
			lbl_ListaEspera.setBounds(20,105,100,25);
			add(lbl_ListaEspera);
			lst_ListaEspera = new JList(mod);
			lst_ListaEspera.setVisibleRowCount(5);
	        lst_ListaEspera.setBounds(20, 140, 150, 250); 
	        JScrollPane scroll = new JScrollPane(lst_ListaEspera);
	        scroll.setBounds(20, 140, 150, 250);
	        add(scroll);
			
	        lbl_NovoMedico=new JLabel("Novo Médico: ");
			lbl_NovoMedico.setBounds(180,10,150,20);
			add(lbl_NovoMedico);
			txt_NovoMedico = new JTextField();
			txt_NovoMedico.setBounds(180, 40, 150, 20);
			txt_NovoMedico.addActionListener(this);
			add(txt_NovoMedico);
			btn_AdicionarMedico = new JButton("Adicionar Médico");
			btn_AdicionarMedico.setBounds(180,70,150,25);
			btn_AdicionarMedico.addActionListener(this);
			add(btn_AdicionarMedico);
			lbl_MedicosDisponiveis = new JLabel("Médicos Disponíveis: ");
			lbl_MedicosDisponiveis.setBounds(180,105,200,25);
			add(lbl_MedicosDisponiveis);
			String medico[]={"Jose"};
			cmb_MedicosDisponiveis = new JComboBox(medico);
			cmb_MedicosDisponiveis.setBounds(180, 140, 150, 20);
			cmb_MedicosDisponiveis.addActionListener(cmb_MedicosDisponiveis);
			cmb_MedicosDisponiveis.setMaximumRowCount(3);
	        add(cmb_MedicosDisponiveis);
	        btn_RemoverMedico = new JButton("Remover Médico");
			btn_RemoverMedico.setBounds(180,180,150,25);
			btn_RemoverMedico.addActionListener(this);
			add(btn_RemoverMedico);
			
			btn_EncerrarAtendimento=new JButton("Encerrar Atendimento ");
			btn_EncerrarAtendimento.setBounds(340,70,220,25);
			btn_EncerrarAtendimento.addActionListener(this);
			add(btn_EncerrarAtendimento);
			lbl_AtendimentosEncerrados=new JLabel("Atendimentos Encerrados:");
			lbl_AtendimentosEncerrados.setBounds(340,105,220,25);
			add(lbl_AtendimentosEncerrados);
			lst_ListaAtendimentosEncerrados = new JList(mod1);
			lst_ListaAtendimentosEncerrados.setVisibleRowCount(5);
	        lst_ListaAtendimentosEncerrados.setBounds(340, 140, 220, 250);
	        add(lst_ListaAtendimentosEncerrados);
	         
			setVisible(true);
		}
		
			public void  actionPerformed (ActionEvent e) {  
				if (e.getSource() == btn_AdicionarPaciente){
					((DefaultListModel)lst_ListaEspera.getModel()).addElement(txt_NomePaciente.getText());                   
		        	txt_NomePaciente.setText(null);
		        	txt_NomePaciente.setFocusable(true);  
				}else
					if (e.getSource()==btn_AdicionarMedico){
						cmb_MedicosDisponiveis.addItem(txt_NovoMedico.getText());
						txt_NovoMedico.setText(null);
				}else
					if (e.getSource()==btn_RemoverMedico){
						if (cmb_MedicosDisponiveis.getItemCount() > 0)
		  					cmb_MedicosDisponiveis.removeItemAt(cmb_MedicosDisponiveis.getSelectedIndex());
			        	else
		  					JOptionPane.showMessageDialog(null,"Nao existe item a remover");
				}else
					if (e.getSource()==btn_EncerrarAtendimento){
						
					}
			}
		
			        
		public void keyPressed(KeyEvent e) {
			switch(e.getKeyCode()){
			case KeyEvent.VK_ENTER:
				cmb_MedicosDisponiveis.addItem(txt_NovoMedico.getText());
				txt_NovoMedico.setText(null);
				break;
			}
		}

		public void keyReleased(KeyEvent e) {
		}

		public void keyTyped(KeyEvent e) {
		}
		
		public static void main(String[] args) {
			new Exercicio6();
		}
		
}

4 Respostas

U

Elnegritocomar seu erro está na linha 79

cmb_MedicosDisponiveis.addActionListener(cmb_MedicosDisponiveis);

como em seu código já está implementado a classe ActionListener, então basta apenas vc passar como parâmetro um this, ficando: cmb_MedicosDisponiveis.addActionListener(this);

Elnegritocomar

Urbgames, valeu!! muito obrigado!! Era só uma bobagem!!

Elnegritocomar

Nesse mesmo código, tenho que adicionar um novo médico tanto com o BOTÃO como com a tecla ENTER. Com o botão já esta resolvido na linha 108 com esse código,

else
					if (e.getSource()==btn_AdicionarMedico){
						cmb_MedicosDisponiveis.addItem(txt_NovoMedico.getText());
						txt_NovoMedico.setText(null);

mas com a tecla enter na linha 124 fiz um keypressed mas não esta dando certo

public void keyPressed(KeyEvent e) {
			switch(e.getKeyCode()){
			case KeyEvent.VK_ENTER:
				cmb_MedicosDisponiveis.addItem(txt_NovoMedico.getText());
				txt_NovoMedico.setText(null);
				break;
			}
		}

Se alguém puder me dar uma dica de onde estou errando, grato. El negrito

Elnegritocomar

Achei meu erro, obrigado galera, simplesmente esqueci de por o addKeyListener no JTextField que adiciona o novo médico!!

txt_NovoMedico.addKeyListener(this);
Criado 4 de abril de 2013
Ultima resposta 4 de abr. de 2013
Respostas 4
Participantes 2