300x250 AD TOP

Blogger news

AD (728x90)

Tecnologia do Blogger.

Colaboradores

Seguidores

Postagens populares

Mostrando postagens com marcador swing. Mostrar todas as postagens
Mostrando postagens com marcador swing. Mostrar todas as postagens
Tagged under: , ,

JComboBox - Java Swing







O objetivo desse post é criar um JComboBox que exiba o nome de alunos cadastrados e  após selecionado uma item do JComboBox seja possível pegar a matrícula do aluno.


Passo 1: Criar uma classe Aluno.java como os atributos matricula, nome e curso e seus respectivos métodos gets e sets

public class Aluno {  
  
    private String matricula;
    private String nome;  
    private String curso;

    public String getMatricula(){
        return matricula;
    } 

    public void setMatricula(String matricula){
        this.matricula = matricula;
    }

    public String getNome(){
        return nome;
    }

    public void setNome(String nome){
        this.nome = nome;
    }

    public String getCurso(){
        return curso;
    }

    public void setCurso(String curso){
        this.curso = curso;
    }

Passo 2: Ainda na classe Aluno.java crie o método getAll() que retorne uma lista dos alunos cadastrados.
public static List getAll() {  
        ArrayList list = new ArrayList();  
          
        Aluno aluno = new Aluno();
        aluno.setMatricula("1111111");
        aluno.setNome("Aluno 1");  
        aluno.setCurso("curso 1");
        list.add(aluno);  
          
        Aluno aluno2 = new Aluno();
        aluno2.setMatricula("2222222");
        aluno2.setNome("Aluno 2");  
        aluno2.setCurso("curso 2");
        list.add(aluno2);  

        Aluno aluno3 = new Aluno();
        aluno3.setMatricula("3333333");
        aluno3.setNome("Aluno 3");  
        aluno3.setCurso("curso 3");
        list.add(aluno3);    
        return list;  
    }  

Passo 3: Sobrescreva do método toString() na classe Aluno.java . A String retornada por esse método será utilizada no display do JComboBox.
    public String toString() {  
        return this.getNome();  
    }  

Passo 4: Crie a classe Tela.java que herda o classe JFrame. A sujestão de imlementação desse JComboBox é fazer com que ele não guarde apenas o uma String do nome do alunos ou a matricula, mas que ele guarda o objeto Aluno como um todo e que exiba no display apenas o nome.

import java.awt.GridLayout;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import java.util.List;  
import java.util.Vector;  
  
import javax.swing.JButton;  
import javax.swing.JComboBox;  
import javax.swing.JFrame;  
import javax.swing.JOptionPane;  
  
public class Tela extends JFrame {  
  
    JComboBox combo = null;  
    JButton  button = null;  
      
      
    public Tela() {  

        List listaAlunos = Aluno.getAll();  
        
        /*
        Variável que será utilizada para carregar o JComboBox que os
        dados dos alunos. 
        */
        Vector alunos = new Vector();         
        alunos.addAll(listaAlunos);  
        
        /*
        Carrega o JComboBox com o vector Alunos
        */
        combo = new JComboBox(alunos);  
        button = new JButton("Ok");  
        
        /*
        Botão adicionado para mostrar que depois que foi selecionado uma opção do 
        JComboBox é possível pegar o numero de matricula através no obejto Aluno
        contido no JComboBox.
 */  
        button.addActionListener(new ActionListener() {  
          
            public void actionPerformed(ActionEvent e) {  
                Aluno aluno = (Aluno) combo.getSelectedItem();  
                System.out.println("Matricula: "+aluno.getMatricula() );
            }  
        });  
          
        /*
        Faz com que após o fechamento dessa tela as outras telas em aberto não
        fechem também.    
        */
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        this.setSize(300, 70);  
        this.setLocationRelativeTo(null);  
        this.setLayout(new GridLayout(1,1));  
        this.getContentPane().add(combo);  
        this.getContentPane().add(button);  
    }  
      
    public static void main(String[] args) {  
        Tela frame = new Tela();  
        frame.setVisible(true);  
    }  

}