GUI + HashSet

3 respostas
F

Olá,

Tenho que adicionar os dados do objeto aluno em um hashset, já pesquisei bastante , mas nao consegui encontrar uma solucao.

public class Aluno {

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Aluno other = (Aluno) obj;
        if ((this.Nome == null) ? (other.Nome != null) : !this.Nome.equals(other.Nome)) {
            return false;
        }
        if (this.Prontuario != other.Prontuario) {
            return false;
        }
        if (this.Turma != other.Turma) {
            return false;
        }
        if ((this.dataNasc == null) ? (other.dataNasc != null) : !this.dataNasc.equals(other.dataNasc)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 11 * hash + this.Prontuario;
        return hash;
    }

   String Nome;
    int Prontuario;
    int Turma;
    String dataNasc;

    Aluno(String string, int i, int i0, String string0) {
        throw new UnsupportedOperationException("Not yet implemented");

    }
public String getNome(){
            return Nome;

        }

    public String getDataNasc() {
        return dataNasc;
    }

    public int getProntuario() {
        return Prontuario;
    }

}
public class Hash {

    private Set<Aluno> alunos;
    private static Hash instance;

    public Hash() {



        instance = this;
        alunos = new HashSet<Aluno>();

    }

    public static Hash getInstance() {
        return instance;
    }


    public Set<Aluno> getAlunos() {
        return alunos;
    }


}
Ai eu tenho a classe aluno e a hash, ai eu criei um frame com 4 textfields e um botao de salvar, queria que quando o botao fosse acionado um novo objeto fosse criado. O codigo que eu coloquei no botao dentro do actionperformed foi o seguinte:
Hash.getInstance().getAlunos().add( new Aluno(textField1.getText(),
Integer.parseInt(textField2.getText()),
Integer.parseInt(textField3.getText()),
textField4.getText()) );

ai eu tenho esse erro qndo tento compilar:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javaapplication1.GUICriar.button1ActionPerformed(GUICriar.java:166)
at javaapplication1.GUICriar.access$000(GUICriar.java:25)
at javaapplication1.GUICriar$1.actionPerformed(GUICriar.java:85)
at java.awt.Button.processActionEvent(Button.java:392)
at java.awt.Button.processEvent(Button.java:360)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Alguem sabe o que está errado?
Obrigado

3 Respostas

ViniGodoy

Se o erro é nullpointerexception é porque você está tentando acessar um método de um objeto que ainda está nulo.

E o java já te deu a dica, está na linha 166 do arquivo GUICriar.java, dentro do actionPerformed.

Coloque um breakpoint ali, e inspecione o valor de variável por variável. Uma delas estará nula.

F

Vlw Vini consegui arrumar aqui já!

Eu tenho que fazer a procura dos objetos da lista pelo seus atributos agora,por exemplo exibir todos os objetos que tiverem turma 111. Pelo arrylist eu pegaria e compararia por posições , agora com o hashset como eu faço para pegar todos os objetos da lista e ir comparando 1 por 1? Eu tava pensando em pegar o hashcode de todos e colocar dentro de uma matriz.

ViniGodoy

Use um for each:

Set<Aluno> selecionados = new HashSet<Aluno>(); for (Aluno aluno : alunos) { if (aluno.getTurma().getId() == 111) { alunos.add(aluno); } }

Criado 15 de março de 2011
Ultima resposta 16 de mar. de 2011
Respostas 3
Participantes 2