Ir ao conteúdo

Posts recomendados

Postado

Bom galera, sou novo na programação, então peço desculpa antecipadamente caso esteja cometendo algum erro grave… e agradeço a atenção desde já!

Estou desenvolvendo um sistema de cadastro de motoristas para um projeto da faculdade.

Inicialmente setei um vetor para armazenar os dados do motorista no proprio jFrame de cadastro, porém caso eu tentasse puxar esses dados para validar e permitir um login, acredito que não seria possível puxar esses dados para o jFrame de Login, então o ideal seria setar este vetor em uma classe exclusiva para ele, e então através disso o jFrame de cadastro puxaria e retornaria normalmente os dados, permitindo também o jFrame de Login validar esses dados. Ou simplestemente eu conseguiria setar este vetor na classe do próprio Motorista?

bom, tentei setar atráves de uma classe exclusiva o vetor, porém além de não conseguir puxar o objeto do vetor para o jFrame de cadastro, não faço ideia se esse é a forma ideal, ou pelo menos funcional deste código. Segue os códigos:

 

Aqui seria a classe na qual estaria passando o vetor:

 

package projetointerdiciplinar;

public class Cadastro {
    
    Motorista x;
    
    public Cadastro(Motorista motorista){
        x = motorista;
    }
    
}

 

////////////////////////////////////////////////

 

Aqui é o jFrame de cadastro, pesquisei bastante, porém não encontrei muito sobre vetores de objetos, muito menos sobre a invocação deles… fora o jFrame:

 

688455575_questNovoMotorista.thumb.png.aa8393f03752b0ed6dcb0e27d5b7927e.png

 

Infelizmente este projeto está sendo cobrado na faculdade, sendo que nós nem tivemos contato com essa passagem de dados dos vetores, muito menos para um jFrame, enfim… agradeço toda a ajuda que vier!

 

 

Postado

Parece que o vetor QuantMot não existe. E parece que tem um problema com o método LerDados da classe LerDadosMotorista. Enfim, você não disse o que aparece na mensagem de erro e sem o código completo não tem como adivinhar.

Postado

@AdrianoSiqueira Nossa mano, só agora que vi que mandei a foto do codigo errado, peço perdão, vou editar lá em cima! 

 

então o restante do código basicamente é a classe motorista:

 

package projetointerdiciplinar;

public class Motorista {

    private String nome, CPF, usuario, senha, CNH;
    private int Pontos; // Pontos disponiveis.
    
    public Motorista(){
    }
    
    public Motorista(String nome, String CPF, String usuario, String senha, String CNH){

        this.nome = nome;
        this.CPF = CPF;
        this.usuario = usuario;
        this.senha = senha;
        this.CNH = CNH;
        
    }
    
    @Override
    public String toString() {
        return "Motorista{" + "nome :" + nome + ", CPF :" + CPF + ", Usuario :" + usuario + ", Senha :" + senha +  ", CNH :" + CNH + '}';
    }
    
    //GET
    public String getNomeMotorista(){
        return nome;
    }
    public String getCPFmotorista(){
        return CPF;
    }
    public String getUsuarioMotorista(){
        return usuario;
    }
    public String getSenhaMotorista(){
        return senha;
    }
    public String getCNHmotorista(){
        return CNH;
    }
    
    // SET
    public void setNomeMotorista(String nome){
        this.nome = nome;
    }
    public void setCPFmotorista(String CPF){
        this.CPF = CPF;
    }
    public void setUsuarioMotorista(String usuario){
        this.usuario = usuario;
    }
    public void setSenhaMotorista(String senha){
        this.senha = senha;
    }
    public void setCNHmotorista(String CNH){
        this.CNH = CNH;
    }
    
}

 

 

Enquanto o erro que retorna é que eu não consigo puxar o QuantMot lá pro jFrame de cadastro

package projetointerdiciplinar;

public class LerDadosMotorista {
    
    public void LerDadosMotorista(){ 
    
    Motorista[] QuantMot = new Motorista[10];

    }
    
    public Motorista[] LerDados(Motorista[] QuantMot){
        
        int i = 0;
        QuantMot[i] = new Motorista();
        
        return QuantMot;
        
    }
    
}

@AdrianoSiqueira

Postado

Tem várias formas de fazer isso. Se você quiser passar o vetor para o JFrame, faça isso através do construtor. Mas eu acho melhor deixar esse vetor em uma classe separada, assim fica mais fácil acessar de outros lugares conforme a necessidade.

Postado

Espera um pouco, vou postar um exemplo.

package exemplo;

import java.util.Objects;

public class Motorista {

    private String nome;
    private String cpf;
    private String chn;
    private String usuario;
    private String senha;

    private int pontos;

    public Motorista() {
    }

    public Motorista(String nome, String cpf, String chn, String usuario, String senha, int pontos) {
        this.nome = nome;
        this.cpf = cpf;
        this.chn = chn;
        this.usuario = usuario;
        this.senha = senha;
        this.pontos = pontos;
    }

    public String getNome() {
        return nome;
    }

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

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getChn() {
        return chn;
    }

    public void setChn(String chn) {
        this.chn = chn;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public int getPontos() {
        return pontos;
    }

    public void setPontos(int pontos) {
        this.pontos = pontos;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Motorista motorista = (Motorista) o;

        return Objects.equals(nome, motorista.nome) &&
                Objects.equals(cpf, motorista.cpf) &&
                Objects.equals(chn, motorista.chn) &&
                Objects.equals(usuario, motorista.usuario) &&
                Objects.equals(senha, motorista.senha) &&
                pontos == motorista.pontos;
    }

    @Override
    public int hashCode() {
        int result = nome != null ? nome.hashCode() : 0;
        result = 31 * result + (cpf != null ? cpf.hashCode() : 0);
        result = 31 * result + (chn != null ? chn.hashCode() : 0);
        result = 31 * result + (usuario != null ? usuario.hashCode() : 0);
        result = 31 * result + (senha != null ? senha.hashCode() : 0);
        result = 31 * result + pontos;
        return result;
    }

    @Override
    public String toString() {
        return "Motorista{" +
                "nome='" + nome + '\'' +
                ", cpf='" + cpf + '\'' +
                ", chn='" + chn + '\'' +
                ", usuario='" + usuario + '\'' +
                ", senha='" + senha + '\'' +
                ", pontos=" + pontos +
                '}';
    }
}
package exemplo;

import javax.swing.*;

public class Interface extends JFrame {

    private Motorista[] motoristas;

    public Interface(Motorista[] motoristas) {
        this.motoristas = motoristas;
    }

    // Restante do código da interface gráfica
}
package exemplo;

public class Principal {
    public static void main(String[] args) {
        Motorista[] motoristas = new Motorista[100];

        Interface cadastro = new Interface(motoristas);
        cadastro.setVisible(true);
    }
}

 

  • Curtir 1
Postado

@AdrianoSiqueira uou mano, confesso que seria meio treta ter montado isso do 0 com o aprendizado que tive com a facul até agora.. 

 

sobre o código da interface, o QuantMot agora se tornou o objeto motorista? ou ainda é necessario eu setar uma variável pra ele?

Postado

Na verdade eu não criei nenhum tipo de controle para inserção, nesse caso, seria apenas criar uma variável do tipo int e iniciar com 0 e ir incrementando conforma adiciona mais motoristas.

 

Você também poderia varrer o vetor até encontrar um objeto null, isso significaria que aquela posição está vazia, aí é só adicionar nessa posição, dessa forma não precisaria de uma variável de controle, mas essa maneira consome mais processamento da máquina.

 

Na real, a melhor maneira seria ao invés de usar vetores, usar listas. Procure a respeito da interface List e da classe ArrayList. Quando aprender usar isso, vai te poupar muita dor de cabeça.

Postado

Estava tentando aplicar aqui em meu código, isto aqui não deveria funcionar? :

 

public class NovoMotorista extends javax.swing.JFrame {
    
    int i = 0;
    
    private Motorista[] motoristas;

    public NovoMotorista (Motorista[] QuantMot) {
        this.motoristas = QuantMot;
        QuantMot[i] = new Motorista();
        initComponents();
    }

	private void botaoCadastrarActionPerformed(java.awt.event.ActionEvent evt) {   

	QuantMot[i] = new Motorista();

        QuantMot[i].setSenhaMotorista(senhaMotoristaText.getText());
        
        QuantMot[i].setNomeMotorista(nomeMotoristaText.getText());
        
        QuantMot[i].setUsuarioMotorista(usuarioMotoristaText.getText());
        
        QuantMot[i].setCPFmotorista(cpfMotoristaText.getText());
        
        QuantMot[i].setCNHmotorista(cnhMotoristaText.getText());
        
        System.out.println(QuantMot[i]);
        
        i++;

	}

 

 

Ele me diz que não encontra a variável do QuantMot

@AdrianoSiqueira Entendo a questão do arrayList, pretendo me aprofundar mais em java após esse semestre da facul

Postado

QuantMot existe apenas dentro do construtor, o seu vetor se chama motoristas, logo deve usar esse nome. Caso não queira, altere o nome do vetor.

1 hora atrás, Rodrigo878 disse:

QuantMot[i] = new Motorista();

Pode remover essa linha de dentro do construtor, pois é inútil.

Postado

@AdrianoSiqueira Mano o código assim funciona, porém eu estou setando o vetor dentro do jFrame, eu conseguiria desta forma por exemplo chamar e pegar os dados deste vetor e utilizar em outro jFrame, ou classe?

 

780544448_testeprint.thumb.png.9602cb59b81c03b7cd5629080694ac5e.png

porque quando eu tento puxar estes dados lá na tela de login, através da classe dos Motoristas, o conteúdo é null, não tenho ideia de como puxar este vetor do jFrame..

Postado

@AdrianoSiqueira O método construtor do jFrame de cadastro não possibilitaria eu fazer isso? estava pesquisando um pouco aqui, e encontrei algo relacionado, que uma forma de transferir dados de um jFrame para o outro seria invocando um método construtor no jFrame e atráves dele eu conseguiria retornar esses dados para o jFrame de Login, isso é possível?

Postado

@AdrianoSiqueira Eu somente gostaria de por exemplo puxar o nome e a senha do vetor Motorista, mas não faço ideia de como fazer isso...

 

O código é exatamento o mesmo que o postado acima, não alterei nada nas outras classes. 

Postado

Tenta dessa forma:

public class NovoMotorista extends javax.swing.JFrame {
    
    private Motorista[] motoristas;
    private int i;

    public NovoMotorista (Motorista[] motoristas) {
        this.motoristas = Objects.requiresNonNull(motoristas, "O vetor não pode ser null.");
        this.i = 0;
        initComponents();
    }

	private void botaoCadastrarActionPerformed(java.awt.event.ActionEvent evt) {   
        motoristas[i] = new Motorista();
        motoristas[i].setSenhaMotorista(senhaMotoristaText.getText());        
        motoristas[i].setNomeMotorista(nomeMotoristaText.getText());        
        motoristas[i].setUsuarioMotorista(usuarioMotoristaText.getText());        
        motoristas[i].setCPFmotorista(cpfMotoristaText.getText());        
        motoristas[i].setCNHmotorista(cnhMotoristaText.getText());        
        System.out.println(motoristas[i]);        
        i++;
    }
    
    public Motorista[] getMotoristas() {
        return motoristas;
    }

 

Postado

@AdrianoSiqueira Fiz como você auxiliou e finalmente consegui invocar o vetor lá no login, porém ele está recebendo null sempre

 

public class interLogin extends javax.swing.JFrame {
    
    Motorista[] motoristas = new Motorista[100];

    NovoMotorista cadastro = new NovoMotorista(motoristas);
    
    int i = 0;
    
    // LOGIN DO ADM
    String loginADM = "ADM", senhaADM = "0000";
    String usu, sen; 
    
    //LOGIN MOTORISTA
    String usuMOTvalidad, senMOTvalidad;

    
    public interLogin(){
        initComponents();
    }
  
	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {  
      
      TelaPrincipal janela = new TelaPrincipal();
        
        System.out.println(motoristas[i]);
        
        //Login comparador
        usu = loginText.getText();
        sen = senhaText.getText();
        
        if (usu.equals(loginADM)&& sen.equals(senhaADM)){
            janela.setVisible(true);
        }
        else if (usu.equals(usuMOTvalidad) && sen.equals(senMOTvalidad) ) {
            System.out.println("funcionou");
        }
        else {
            System.out.println("dados invalidos");
        }
        
        i++;
      
     } 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...