Como preecher um combobox usando essa função

10 respostas
Willdoidao

Tenho uma função para pegar a aporta seria e queria preencher um combobox com as portas seriais do micro segue abaixo o código que eu fiz mas está dando erro:

public Porta() {
        initComponents();
        listaDePortas = CommPortIdentifier.getPortIdentifiers();
    }
    //retorna as portas disponíveis
       public String[] ObterPortas(){
               return portas;
       }
     //Copia portas para um Array
       protected void ListarPortas(){
         int i = 0;
         portas = new String[10];
         while (listaDePortas.hasMoreElements()) {
              CommPortIdentifier ips =
              (CommPortIdentifier)listaDePortas.nextElement();
              portas[i] =  ips.getName();
              i++;
         }
       }
       //pesquisa se a Porta existe
       public boolean PortaExiste(String COMp){
          String temp;
          boolean e = false;
          while (listaDePortas.hasMoreElements()) {
              CommPortIdentifier ips =
              (CommPortIdentifier)listaDePortas.nextElement();
              temp = ips.getName();
              if (temp.equals(COMp)== true) {
                  e = true;
              };
          }
          return e;
       }

       //imprime as portas disponíveis
       protected void ImprimePortas(){
              for (int i = 0 ; i < portas.length ; i ++ ) {
                  if (portas[i] != null ) {
                     //System.out.print(portas[i] + "  ");
                     CBB_porta.addItem(getString("portas"));
                  }
              }

       }

10 Respostas

kenneth

E qual o erro?

RenataFA

Depois que vc carregar o String[] portas, na hora em que for colocar o conteúdo no combo, faça assim:

seuCombo.setModel(new DefaultComboBoxModel(portas));
Willdoidao

Prenchi no local errado?
Pq no meu micro tenho duas entrada de porta serial, só que quando executo o comando com o qual vc passou não está carregando nenhuma das duas portas, dá uma olhada ai:

//imprime as portas disponíveis
       protected void ImprimePortas(){
              for (int i = 0 ; i < portas.length ; i ++ ) {
                  if (portas[i] != null ) {
                     //System.out.print(portas[i] + "  ");
                     //CBB_porta.addItem(getString("portas"));
                      CBB_porta.setModel(new DefaultComboBoxModel(portas));
                  }
              }

       }

Não é isso?? Pq não está carregando nada!

RenataFA
Willdoidao:
Prenchi no local errado? Pq no meu micro tenho duas entrada de porta serial, só que quando executo o comando com o qual vc passou não está carregando nenhuma das duas portas, dá uma olhada ai:
//imprime as portas disponíveis
       protected void ImprimePortas(){
              for (int i = 0 ; i < portas.length ; i ++ ) {
                  if (portas[i] != null ) {
                     //System.out.print(portas[i] + "  ");
                     //CBB_porta.addItem(getString("portas"));
                      CBB_porta.setModel(new DefaultComboBoxModel(portas));
                  }
              }

       }

Não é isso?? Pq não está carregando nada!

Quase isso! Não precisa do loop! Assim:

//imprime as portas disponíveis
       protected void ImprimePortas(){
              if (portas != null)
                  CBB_porta.setModel(new DefaultComboBoxModel(portas));
       }

Se vc realmente tem o conteúdo certo no array portas nesse momento, deve funcionar.

Willdoidao

Devo ter errado em alguma parte do array, pq em outras telas que tenho funcionou (mas nw era para listar a porta serial). Vou dar uma estudada aqui pra ver o que posso estar errado se tiver alguma dica fico mais agradecido. E muito obrigado pela ajuda nossa foi uma mão na Roda muito obrigado Renata!!!

Willdoidao

Alguem poderia me ajudar a descobrir aonde está o erro desse array? Pq nw consigo de jeito nenhum popular em combobox? Realmente não sei aonde está o erro e pq nw carrega o combobox.
Desde já agradeço!

RenataFA

Olá!

Por favor, post denovo seu código fonte pra vermos como está nesse momento.

criador

Veja este exemplo.
Acredito que é isto que você quer.

public class		CapturarPortasSerial
	extends		JDialog
{
	private			JComboBox
	io_cb_portas;
	
	private			Enumeration<CommPortIdentifier>
	io_portas_disponiveis		=	CommPortIdentifier.getPortIdentifiers();
	
	private			CommPortIdentifier
	io_porta_selecionada;
	
	private			ArrayList<String>
	io_al_portas		=	new ArrayList<String>();
	
	private			OutputStream
	lo_saida;
	
	private			CapturarPortasSerial()
	{
		setSize(200,100);
		setLayout(null);
		setTitle("Portas disponíveis");
		setLocationRelativeTo(null);
		CapturarPortaDisponivel();
		Window();
	}
	
	private
	void			Window()
	{
		io_cb_portas		=	new JComboBox(io_al_portas.toArray());
		io_cb_portas.setBounds(10,10,80,25);
		getContentPane().add(io_cb_portas);
	}
	
	/**
	Guarda em um array, todas as portas seriais disponíveis no computador.
	*/
	private
	void			CapturarPortaDisponivel()
	{
		//
		// Enquanto há porta disponível...
		//
		while	(
				io_portas_disponiveis.hasMoreElements()
			)
		{
			//
			// Armazena a porta no array.
			//
			io_al_portas.add(io_portas_disponiveis.nextElement().getName());
		}
	}
	
	public static void main(String[] args)
	{
		JDialog.setDefaultLookAndFeelDecorated(true);
		new CapturarPortasSerial().setVisible(true);
	}
}

Caso não solucionou o seu problema, poste o erro que lhe ajudaremos.

Abraço!

Willdoidao

Muito obrigado pela ajuda! Funcionou, ainda nw descobri o erro que tinha no outro mas com seu codigo consegui resolver o problema!!
Valeu mesmo pela ajuda pessoal!! Valeu!

:smiley: :smiley: :smiley: :lol: :lol:

Willdoidao

Funcionou muito obrigado pela ajuda!!!

Criado 28 de setembro de 2009
Ultima resposta 7 de out. de 2009
Respostas 10
Participantes 4