Problema com construtor

8 respostas
victorhugo.sfs

Bom dia pessoal, pessoal eu já li varias explicaçõe sobre construtores e ainda estou com problema com construtores, tipow eu criei uma formulario de clientes, e nessa classe eu deixei só a interface do programa mesmo, e em outra classe eu criei os metodos de incluir clientes, atualizar clientes e etc.. O problema está ai não sei se criei o contrutor corretamente para a classe do formulario chammar a classe que estão os metod de incluir e etc ai vai uma explicação para entender o meu problema:

Vou colocar um exemplo de como estou fazendo: classe do formulario de cadastro do cliente:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;


public class CadastraUsuario implements ActionListener {

 JLabel labelNome =new JLabel("Nome");
 JLabel labelSenha =new JLabel("Senha");

 JTextField txtNome =new JTextField(40);
 JTextField txtSenha =new JTextField(30);
 
 JButton btnInseri =new JButton("Inserir");

 JPanel panel =new JPanel();

 public CadastraUsuarios() {
montaCadastroUsuario();
}

 public void montaCadastroUusuario() {
  JFrame.setDefaultLookAndFeelDecorated(true);
  JFrame frame =new JFrame();
  frame.setTitle("Cadastro - Uusuario");
  frame.setSize(500, 300);
  frame.setLocation(300, 200);
  
 panel.add(labelNome);
 panel.add(txtNome);
 panel.add(labelSenha);
 panel.add(txtSenha);

//Botão inserir
btnInseri.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e) {
  BaseDadosClientes bdc =new BaseDadosClientes();
  bdc.inseriClientes();
}
});

//O problema está ai ele não iseri os clientes e também nem erro dá

 frame.add(panel);
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.setVisible(true);
 }

public static void main(String[] args) {
new CadastraUsuario();
}
}

classe onde estão os metodos de inserir e etc...

import java.sql.*;
import org.postgresql.util.*;

public class BaseDadosClientes {

  Statement stmt;
  ResultSet rs;

 public BaseDadosClientes() {
}

 public Connection conecta() {
try {

 class.forName("org.postgresql.Driver");
 String url = "jdbc:postgresql://localhost/sistema";
 string user = "postgres";
 String pass = "xxxxxx";

conn = DriverManager.getConnection(url, user, pass);
}
catch(Exception e) {
System.out.println(e.getMessage());
}
}

public void inseriClientes() {
//aqui vão os metodos para inserir clientes
}

public void atualizaClientes() {
//aqui vão os metodos para atualizar clientes
}
}

Se alguém poder me ajudar, desde já agradeço :lol:

8 Respostas

correainfo

Bom olhando o codigo eu acho q o problema esta na declaracao do construtor

public CadastraUsuarios() {  
   montaCadastroUsuario();  
 }

Tem q ser igual a declaracao da classe.
O problema esta que vc declarou o construtor como CadastroUsuarios e tem q ser CadastroUsuario sem o S

Tenta assim

public CadastraUsuario() {  
   montaCadastroUsuario();  
 }
victorhugo.sfs

Então correainfo mas continua não pegando os metodos da classe BaseDadosClientes, tipow como eu deveria deixar o construtor da classe BaseDadosClientes para que a classe do CadastroClientes possa acessar corretamente ela?
Abraço

correainfo

Ele so vai entrar nesse metodo quando houver uma acao no botao inserir.
Coloque um breakpoint depois do actionPerformed vc vai ver q ele vai inserir quando o botao inserir for clicado.

//Botão inserir  
 btnInseri.addActionListener(new ActionListener() {  
 public void actionPerformed(ActionEvent e) {  
   BaseDadosClientes bdc =new BaseDadosClientes();  
   bdc.inseriClientes();  
 }  
 });
renan_

Se você deixar o construtor da classe BaseDadosClientes do jeito que está a classe CadastroClientes pode criar uma instancia de BaseDadosClientes sem problemas.

Bom, correainfo te monstrou um erro grave: O construtor da classe deve ter o mesmo nome da classe.

Como está a implementação do seu metodo inseriClientes() ? Em que momento você está se conectando ao banco ?

Seu codigo tá estranho amigo, você nao passa NADA por parametro para o metodo inseriClientes()?

Penso que a logica deveria ser assim: Após preencher o formulário, ao clicar no botao INSERIR, os dados do formulario são passados para o metodo inseriClientes(), este que se conecta no banco atraves do metodo conecta() e então insere os dados no banco.

T+

debug

Vitor …

de uma olha no exemplo do link , la mostra uma maneira de separar as responsabilidades.

http://www.guj.com.br/posts/list/92153.java#499167

A ideia é ter um Model, Controle, View e uma classe para transferir dados.

veja se é isso que vc deseja.

ate+

victorhugo.sfs

Era isso mesmo debug que eu estava precisando, mas tipow não é obrigatório eu criar a rotina dentro do contrutor né? eu posso criar um objeto e chamar dentro dele? tipow eu criar um objeto e chamar dentro dele

tipow um exemplo:

public class Cadastro {

  String nome;
  String sobreNome;

 public Cadastro() {
montaCadastro();
}

public void montaCadastro() {
this.nome = "nome";
this.sobreNome = "Sobenome".
}
}

eu posso fazer assim?

debug

sim , sem problemas

da na mesmo é apenas uma maneira de organizar seu fonte.

fico feliz poder ajudar, pois demorei pacas para entender isso hehe

abraço

ate
Ayres

victorhugo.sfs

[i]Valeu debug pela ajuda agradecido mesmo!! hehe… estava dificil de entender peguei varias explicações, mas sempre quando eu começava a escrever os codigos, tudo embaralhava na cabeça ai saia tudo errado!!

Mas valeu!!

ABraço[/i]

Criado 13 de julho de 2008
Ultima resposta 13 de jul. de 2008
Respostas 8
Participantes 4