Duvida interface

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?

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

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

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)

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!

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

ola…

ok…
esta é a classe Aluno()

[code]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;
}

[/code]
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

[code]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;}
}
});
[/code]
pronto… esta meio bagunçado mais axo que da pra entender…

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

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!

Oi,

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

[code] 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();   
			           
			                   }   
			                });
		       }   
		          });
	}[/code]

Tchauzin!

[quote=lina]Oi,

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

[code] 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();   
			           
			                   }   
			                });
		       }   
		          });
	}[/code]

Tchauzin![/quote]

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

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!!

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…

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