300x250 AD TOP

Blogger news

AD (728x90)

Tecnologia do Blogger.

Colaboradores

Seguidores

Postagens populares

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);  
    }  

}    


0 comentários:

Postar um comentário