Duvida interface

12 respostas
J

ola…

sou nova no mundo java… e estou aprendendo interface grafica com swing…
minha duvida é a seguinte:
estou fazendo um trab de Java na escola e o professor deu um mini- sistema escolar para cadastro de alunos (matricula, listagem, etc…)
Tenhu uma classe aluno, e um vetor

na main eu crio um objeto

que esta dentro de um for, e depois adiciono cada objeto em vAlunos.size();
.
.
.

a.setMatricula(vAlunos.size()); vAlunos.addElement(a);
logo após o usuario preencher a tela de matricula(nome, idade…)… fiz um JLabel dentro de um novo JFrame com a frase:

con = new JLabel("Guardado com Sucesso!!"); con1 = new JLabel("Seu número de Matrícula é: "+String.valueOf(a.getMatricula()));
mas quando executo o novo JFrame ele sempre me mostra a matricula igual a 0.
o estranho é que quando mando listar os alunos ja matriculados com seus numeros de matricula respectivamente ele me mostra exatamente
0 - Fulano
1 - Sicrano …

onde esta o erro?

12 Respostas

Foxlol

Como você obtém a referência a abaixo?

con = new JLabel("Guardado com Sucesso!!");  
con1 = new JLabel("Seu número de Matrícula é: "+String.valueOf(a.getMatricula()));
J

Só uma dica.
Você está setando a matricula com o size do vetor correto?
Pois bem…se voce tem 0,1,2 a proxima matricula será 3 , agora se você exclui a matricula 1 o proximo será 2 …assim você terá duas matriculas com o mesmo número.

Abraço

J

ola,

esqueci de mencionar… a classe Aluno possui um metodo

public int getMatricula() { return matricula; }
e outro

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

daí a referencia

a classe Aluno tbm possui um metodo

public void setStatus() { this.status = false; }
ele faz com que o aluno nao seja excluido e sim somente desativado (assim ele nao sera mostrado nas listagens)

lina

Oi,

Bem vindo ao Guj.

Olhando pela teoria: Sua logica está correta, estruturas estão corretas e uso de encapsulamento correto.

Porém precisamos de mais informações. Poderia postar as classes para uma melhor analise?

Tchauzin!

Foxlol

É verdade, senão fica difícil enxergar.

J

ola..

ok.. esta é a classe Aluno()
public class Aluno {
private String nome, cpf;
private int idade, matricula;
private boolean status=true;

    
    public String getNome() {
        return nome;
    }

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

    
    public int getMatricula() {
        return matricula;
    }

    
    public void setMatricula(int matricula) {
        this.matricula = matricula;
    }
a mesma coisa para getCpf(), setCpf(), getIdade(), getStatus() e setStatus() - Status é se o aluno estuda ou nao estuda mais na escola no setIdade fiz um teste p ver se a idade é maior q 0.
public void setIdade(int idade) {
        if(idade>0) this.idade = idade;
        else System.out.println("ERRO! Idade Inválida!");
    }
Agora a main
public static void main(String[] args) {
    
JRadioButton rb0, rb1, rb2, rb3, rb4, rb5;         
rb0 = new JRadioButton("Sair", true);
rb1 = new JRadioButton("Matricular", false);
rb2 = new JRadioButton("Listar", false);
rb3 = new JRadioButton("Excluir", false);
rb4 = new JRadioButton("Alterar", false);
rb5 = new JRadioButton("Consultar", false); 
rb0.setActionCommand("0");
rb1.setActionCommand("1");
rb2.setActionCommand("2");
rb3.setActionCommand("3");
rb4.setActionCommand("4");
rb5.setActionCommand("5");
            
JPanel p3 = new JPanel(new GridLayout(4,2,10,1));
p3.add(rb0);
p3.add(rb1);
p3.add(rb2);
p3.add(rb3);
p3.add(rb4);
p3.add(rb5);
            
JButton ok = new JButton("OK");
p3.add(ok);
JPanel p1 = new JPanel(new GridLayout(1,2));
princ.removeAll();
p1.removeAll();
p1.add(p2);
p1.add(p3);
princ.add(p1);
            
j.getContentPane().add(princ);
j.setVisible(true);
                
ButtonGroup grupo = new ButtonGroup();  
grupo.add(rb0);
grupo.add(rb1);  
grupo.add(rb2);  
grupo.add(rb3);  
grupo.add(rb4);
grupo.add(rb5);
            
JFrame j3 = new JFrame("Executando..");
j3.setSize(690,240);
j3.setLocation(195,195);
JPanel p10 = new JPanel();
JPanel princ2 = new JPanel(new GridLayout(2,1));
JPanel ll = new JPanel();
JFrame j2 = new JFrame("Confimação");
j2.setSize(200,150);
j2.setLocation(400,250);

ok.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
switch(Integer.parseInt(grupo.getSelection().getActionCommand())){
       case 0:
          System.exit(0);
          break;
       case 1:
          p10.removeAll();
          ll.removeAll();
          princ2.removeAll();
          a = new Aluno();
          JLabel l1 = new JLabel("Entre com o Nome do Aluno: ");
          JLabel l2 = new JLabel("Entre com a Idade do Aluno: ");
          JLabel l3 = new JLabel("Entre com o CPF do Aluno: ");
          JLabel l4 = new JTextField(30);
          JLabel l5 = new JTextField("1",5);
          JLabel l6 = new JTextField(20);
          p4.removeAll();
          p5.removeAll();
          p4.add(l1);
          p4.add(l2);
          p4.add(l3);
          p5.add(l4);
          p5.add(l5);
          p5.add(l6);
          p10.add(p4);
          p10.add(p5);
          princ2.add(p10);
          JButton matr = new JButton("Matricular");
          ll.add(matr);
          princ2.add(ll);
          j3.getContentPane().add(princ2);
          j3.setVisible(true);

          matr.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent e) {
              a.setNome(l4.getText());
              a.setIdade(Integer.parseInt(l5.getText()));
              a.setCpf(l6.getText());
              a.setMatricula(vAlunos.size());
              vAlunos.addElement(a);
                               
            JLabel con = new JLabel("Guardado com Sucesso!!");
            JLabel con1 = new JLabel("Seu número de Matrícula é: "+String.valueOf(a.getMatricula()));
            JButton bo = new JButton("OK");
                JPanel la = new JPanel();
                la.add(con);
                la.add(con1);
                la.add(bo);
                j2.add(la);
                j2.setVisible(true);
                bo.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent e) {
                         j2.dispose();
                         j3.dispose();
         
                   }
                });
       }
   });
          break;}
}
});
pronto.. esta meio bagunçado mais axo que da pra entender..

repetindo.. o Frame j2 imprime sempre matricula 0. pq?

lina

Oi,

Existem ciosas estranhas em sua codificação! Algumas sem compilação e algumas variaveis não criadas no meio do código… Ex:

JLabel l4 = new JTextField(30); JLabel l5 = new JTextField("1",5); JLabel l6 = new JTextField(20);

Para instanciar um JLabel, você está utilizando um JTextField ?!?!? isso seria impossível.

Em nenhum momento da sua códificação é criado a variavel vAlunos. Ou seja, como utilizar uma variavel que não existe? Logo:

Não funcionará, erro de compilação! poderia ser a.size() mais a logica ficaria errada.

Tchauzin!

lina

Oi,

Caso você tenha criado a variavel vAlunos em algum lugar, sua sequencia deveria ser:

switch(Integer.parseInt(grupo.getSelection().getActionCommand()))
		{   
			       case 0:   
			          System.exit(0);   
			          break;   
			       case 1:   
			          p10.removeAll();   
			          ll.removeAll();   
			          princ2.removeAll();   
			          a = new Aluno();   
			          JLabel l1 = new JLabel("Entre com o Nome do Aluno: ");   
			          JLabel l2 = new JLabel("Entre com a Idade do Aluno: ");   
			          JLabel l3 = new JLabel("Entre com o CPF do Aluno: ");   
			          JLabel l4 = new JTextField(30);   
			          JLabel l5 = new JTextField("1",5);   
			          JLabel l6 = new JTextField(20);   
			          p4.removeAll();   
			          p5.removeAll();   
			          p4.add(l1);   
			          p4.add(l2);   
			          p4.add(l3);   
			          p5.add(l4);   
			          p5.add(l5);   
			          p5.add(l6);   
			          p10.add(p4);   
			          p10.add(p5);   
			          princ2.add(p10);   
			          JButton matr = new JButton("Matricular");   
			          ll.add(matr);   
			          princ2.add(ll);   
			          j3.getContentPane().add(princ2);   
			          j3.setVisible(true);   
			  
			          matr.addActionListener(new ActionListener(){   
			          public void actionPerformed(ActionEvent e) {   
				              
			        	      a.setNome(l4.getText());   
				              a.setIdade(Integer.parseInt(l5.getText()));   
				              a.setCpf(l6.getText());   
				              
				              vAlunos.add(a); // PRIMEIRO AQUI.
				              
				              a.setMatricula(vAlunos.size());  // DEPOIS AQUI 
				                                 
				            JLabel con = new JLabel("Guardado com Sucesso!!");   
				            JLabel con1 = new JLabel("Seu número de Matrícula é: "+String.valueOf(a.getMatricula()));				                                                            JButton bo = new JButton("OK");   
				                JPanel la = new JPanel();   
				                la.add(con);   
				                la.add(con1);   
				                la.add(bo);   
				                j2.add(la);   
				                j2.setVisible(true);   
				                bo.addActionListener(new ActionListener(){   
				                   public void actionPerformed(ActionEvent e) {   
				                         j2.dispose();   
				                         j3.dispose();   
				           
				                   }   
				                });
			       }   
			          });
		}

Tchauzin!

Foxlol
lina:
Oi,

Caso você tenha criado a variavel vAlunos em algum lugar, sua sequencia deveria ser:

switch(Integer.parseInt(grupo.getSelection().getActionCommand()))
		{   
			       case 0:   
			          System.exit(0);   
			          break;   
			       case 1:   
			          p10.removeAll();   
			          ll.removeAll();   
			          princ2.removeAll();   
			          a = new Aluno();   
			          JLabel l1 = new JLabel("Entre com o Nome do Aluno: ");   
			          JLabel l2 = new JLabel("Entre com a Idade do Aluno: ");   
			          JLabel l3 = new JLabel("Entre com o CPF do Aluno: ");   
			          JLabel l4 = new JTextField(30);   
			          JLabel l5 = new JTextField("1",5);   
			          JLabel l6 = new JTextField(20);   
			          p4.removeAll();   
			          p5.removeAll();   
			          p4.add(l1);   
			          p4.add(l2);   
			          p4.add(l3);   
			          p5.add(l4);   
			          p5.add(l5);   
			          p5.add(l6);   
			          p10.add(p4);   
			          p10.add(p5);   
			          princ2.add(p10);   
			          JButton matr = new JButton("Matricular");   
			          ll.add(matr);   
			          princ2.add(ll);   
			          j3.getContentPane().add(princ2);   
			          j3.setVisible(true);   
			  
			          matr.addActionListener(new ActionListener(){   
			          public void actionPerformed(ActionEvent e) {   
				              
			        	      a.setNome(l4.getText());   
				              a.setIdade(Integer.parseInt(l5.getText()));   
				              a.setCpf(l6.getText());   
				              
				              vAlunos.add(a); // PRIMEIRO AQUI.
				              
				              a.setMatricula(vAlunos.size());  // DEPOIS AQUI 
				                                 
				            JLabel con = new JLabel("Guardado com Sucesso!!");   
				            JLabel con1 = new JLabel("Seu número de Matrícula é: "+String.valueOf(a.getMatricula()));				                                                            JButton bo = new JButton("OK");   
				                JPanel la = new JPanel();   
				                la.add(con);   
				                la.add(con1);   
				                la.add(bo);   
				                j2.add(la);   
				                j2.setVisible(true);   
				                bo.addActionListener(new ActionListener(){   
				                   public void actionPerformed(ActionEvent e) {   
				                         j2.dispose();   
				                         j3.dispose();   
				           
				                   }   
				                });
			       }   
			          });
		}

Tchauzin!

Lina, acho que a ordem aí não seria problema, pois pelo que eu entendi ele até aceita que o código do primeiro registro seja zero...

Parece que o problema está em algum outro lugar que está manipulando o vAlunos....pelo menos não to enxergando nada aí!

j.bianchini poste outras partes do código que manipulam o objeto vAlunos.

[]'s

PS: Li o post denovo....o problema era esse exibir zero primeiro ou de sempre exibir só zero? o.O hAehouiaheuiae...se for a primeira situação é o que a Lina escreveu mesmo....omg

lina

Oi,

Poisé… teoricamente com a ordem que ele está fazendo, a primeira vez sempre será zero! Por isso postei assim…

Estamos com problema de encontrar o problema, pois a codificação postada não compila e ainda falta alguma coisa =)

Tchauzin!!

J

ola,

o erro do JLabel - JTextField que vc se referiu lina é que eu nao quis postar as declaraçoes de variaveis pq ia ficar mt grande o post mas tentei declarar algumas na hora de postar só para vcs entenderem (só q eu errei ali ctr+c ctr+v rsrs), e também ja declarei o vAlunos…
está tudo certo…
Como o Foxlol disse eu quero q o primeiro seja 0, porém… no jframe q exibe a confirmaçao de matricula ele sempre mostra “Sua matricula é 0”, eu posso ter cadastrado 10 alunos ja, mas ele sempre mostra matricula igual a 0… só que se pedir pra listar todos os alunos com seus numeros de matricula pelo metodo getMatricula() tenho o seguinte resultado
0 - aluno1
1 - aluno2
ou seja… ele ta armazenando os numeros certos, mas só mostra 0.
parece impossivel encontrar esse errinho :S
obrigada pela atençao…

Foxlol

Posta seu código de listagem de matrículas ae.

Criado 20 de outubro de 2009
Ultima resposta 22 de out. de 2009
Respostas 12
Participantes 4