Programa simples

Caro colega,

Gostaria de fazer o meu primeio programa usando uma interface gráfica, por exemplo: um cadastro bem simples de cliente só mesmo para dar o primeiro empurrão. Nes cadastro, teria uma caixa de texto para digitar o nome, o endereço e a data da inclusão no caadastro. um botão para incluir, outro para excluir e um botão para sair do sistema.
Só tenho o conhecimento básico da faculdade mas com o uso de saidas em console.
Como IDE eu tenho o JDeveloper 10 e o JCreator. mas posso conseguir outras dentro do que voce puder me ajudar com o exemplo, ok?

Ficarei muito agradecido,

Edson
edson.amorim@oi.com.br

[i] Cara,
tenta abaixa o Eclipse ai.
é mto bom.
da uma olha em conexão com banco.
ai depois vc da uma olhanda em Swing.

qualquer duvida posta ae
Até [/i]

Caro colega,

Lhe agradeço imensamente pela valiosa dica. Já estou baixando oeclipse (121 MB) não é isso?

Vou instalar e aí é que vou novamente correr atraz da ajuda dos amigos aqui do fórum e com certeza, acredito que vou poder contar contigo pois estou começando mesmo agora e já estou louco para ver um programinha com um visual mais apresentado, mesmo que seja muito simples mesmo, arroz cm feijão como eu disse acima. Se voce tiver algum exemplo também e puder me indicar ou me enviar ficarei também muito agradecido.

Meu e-mail é edson.amorim@oi.com.br

Edson

[i]é esse ai mesmo, cara pronto aqui eu não tenho nada
mais procura na net ai, se vc não acha da uma olhada naquilo que eu disse acima.

Até[/i]

[i]uma dica
Caixa de texto: JTextField
Botão: JButton

procura ai sobre esse dois, pelo que vc disse acimaseram só os dois que vc vai utilizar

até [/i]

classe CadastrarCliente trabalha com a interface apenas. A classe ControlaCadastrarCliente chama as demais classes, neste caso, como só tem uma… chama apenas CadastrarCliente.

[code]import java.awt.*;

import javax.swing.*;

public class CadastrarCliente extends JFrame{

private		Container	container;
private		JLabel		labelNome, labelEndereco, labelBairro; 
private		JTextField	fieldNome, fieldEndereco, fieldBairro;
private		JButton		buttonGuardar, buttonCancelar;

public CadastrarCliente(){

	super("Cadastrar Cliente");

	container = getContentPane();
	container.setLayout(null);

	labelNome = new JLabel("Nome");
	labelNome.setBounds(10, 10, 50, 25);
	fieldNome = new JTextField();
	fieldNome.setBounds(70, 10, 280, 25);		
	container.add(labelNome);
	container.add(fieldNome);

	labelEndereco = new JLabel("Endereco");
	labelEndereco.setBounds(10, 40, 200, 25);
	fieldEndereco = new JTextField();
	fieldEndereco.setBounds(70, 40, 280, 25);
	container.add(labelEndereco);
	container.add(fieldEndereco);

	labelBairro = new JLabel("Bairro");
	labelBairro.setBounds(10, 70, 290, 25);
	fieldBairro = new JTextField();
	fieldBairro.setBounds(70, 70, 280, 25);
	container.add(labelBairro);
	container.add(fieldBairro);

	buttonGuardar = new JButton("Guardar");
	buttonGuardar.setBounds(90, 100, 80, 30);
	buttonCancelar = new JButton("Cancelar");
	buttonCancelar.setBounds(180, 100, 100, 30);
	container.add(buttonGuardar);
	container.add(buttonCancelar);

	setSize(400,300);
	setVisible(true);

}

}[/code]

[code]
class ControleCadastrarCliente{

public static void main(String args[]){

	CadastrarCliente cadastroCliente;

	cadastroCliente = new CadastrarCliente();

}	

}[/code]

espero que isso sirva de impulso pra seus estudos… abraços!!

Prezado Dougufpa,

É isso mesmo !! Lhe agradeço imensamente pela grande ajuda. Já vou fazer os primeiros testes e volto a postar aqui como foi o resultado. Eu tenho em minha máquina o JDeveloper 10 e tenho tanbém o Jcreator. Neste caso, qual destes eu devo usar?

Obrigado mais uma vez,

Atenciosamente,

Edson Amorim

Grande Doug…beleza ??
para eu armazenar os clientes cadastrados eu preciso de uma conexão de banco de dados, certo ?

existe um banco de dados específico ? ou posso usar SQL ou Access ?

como posso fazer esse tipo de conexão ?

valeu
Rafael

caro colega de forum Amamorim sobre a questão do editor que deseja usar, vai depender de qual melhor lhe agradar, por exemplo ja usei varios: JCreator, Java Editor, Eclipse, JGrasp, NetBiens entre outros.
Pelo menos eu não ligo muito pra essa de editor, a unica vantagem que acho é a indentação, do resto prefiro usar o bloco de nota mesmo. Já vi e ouvi falar inumero grandes projetos e na maioria deles usavam o Eclipse. Eu pelo menos gosto de trabalhar direto com o codigo, por isso uso qualquer bloco de notas.

sobre a questão do meu caro colega de forum Itatiba00, sim você precisa de uma conexão com o banco de dados para armazenar os dados. A escolha da linguagem para fazer o banco de dados fica a seu criterio: Mysql, Acess, etc… para fazer o tipo de conexão.
abaixo tem um codigo para fazer a conexao, pesquisa, etc, da uma olhada nos metodos. É uma classe para fazer conexão do banco com o Cadastro do Usuario, espero que entenda, caso contrario pode colocar suas duvidas a respeito o código está abaixo:

[code]package br.ufpa.bd2.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import br.ufpa.bd2.negocio.Associado;
import br.ufpa.bd2.util.Consts;

public class AssociadoDAO extends AbstractGenericDAO {
/**
*
*/
static {
try {
Class.forName(Consts.CLASSNAME);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

/**
 * 
 * @param associado
 */
public static void inserir (Associado associado) {
	
	Connection con = null;
	Statement st = null;
	try {
		con = getConnection();
		st = con.createStatement();
		String [] fone = associado.getFone();

		String query = "insert into associados (adesao, codfranqfunc, datacadastro, situacao, modalidade, " +
						"cliente, tipo, sexo, estadocivil, endereco, bairro, cidade,  cep, " +
						"profissao, cpfcgc, rg, datanascimento, email, fone1, fone2, fone3, fone4, obs) values ('" + 
						associado.getAdesao() +  "','" + associado.getCodfranqfunc() +"','" + associado.getDataCadastro() + 
						"','" + associado.getSituacao() + "','" + associado.getModalidade() + "','" + associado.getCliente() + 
						"','" + associado.getTipo() + "','" + associado.getSexo() + "','" + associado.getEstadoCivil() + "','" + 
						associado.getEndereco() + "','" + associado.getBairro() + "','" + associado.getCidade() + 
						"','" + associado.getCep() + "','" + associado.getProfissao() + "','" + associado.getCpf() + "','" + associado.getRg() +
						"','" + associado.getDataNascimento() + "','" + associado.getEmail() + "','" + fone[0] + "','" + " " + "','" + " " +
						"','" + " " + "','" + associado.getObs() + "')";
		System.out.println(query);
		
		st.execute(query);
					
	} catch (SQLException e) {
		e.printStackTrace();
	}finally {
		try {
			st.close();
			con.close();
		} catch (SQLException e) {}
	}
	
}


/**
 * 
 * @param associado
 */
public static void atualizar (Associado associado) {
	Connection con = null;
	Statement st = null;
	
	try{
		con = getConnection();
		st = con.createStatement();
		
		String [] fone = associado.getFone();
		
		String query = "update associado set situacao='" + associado.getSituacao() + "', modalidade='" + associado.getModalidade() + "', " +
						"cliente='" + associado.getCliente() + "', tipo='" + associado.getTipo() + "', sexo='" + associado.getSexo() + 
						"', estadocivil='" + associado.getEstadoCivil() + "', endereco='" + associado.getEndereco() + 
						"', bairro='" + associado.getBairro() + "', cidade='" + associado.getCidade() + "', uf='" + associado.getUf() + 
						"', cep='" + associado.getCep() + "', profissao='" + associado.getProfissao() + "', cpf='" + associado.getCpf() + 
						"', rg='" + associado.getRg() + "', datanasc='" + associado.getDataNascimento() + "', email='" + associado.getEmail() + 
						"', fone1='" + fone[0] + "', fone2='" + fone[1] + "', fone3='" + fone[2] + "', fone4='" + fone[3]+ "', obs='" + associado.getObs() + "' where adesao='" + associado.getAdesao() + "'";
		
		st.executeUpdate(query);
		
	}catch (SQLException e) {
		e.printStackTrace();
	}finally {
		try {
			st.close();
			con.close();
		}catch (SQLException e) {}
	}
}

/**
 * 
 * @param associado
 */
public static Associado [] pesquisar (String campo, String valor) {
	Connection con = null;
	Statement st = null;
	Associado [] associados = null;
	
	try {
		con = getConnection();
		st = con.createStatement();
		
		String query = "select * from associados where " + campo + "='" + valor + "'";
		
		ResultSet rs = st.executeQuery(query);

		if (rs.next()) {
			
			ArrayList <Associado> temp = new ArrayList <Associado> (); 
			do {
				Associado aux = new Associado ();
				aux.setAdesao(rs.getInt("adesao"));
				aux.setCodfranqfunc(rs.getInt("codfranqfunc"));
				aux.setDataCadastro(rs.getString("datacadastro"));
				aux.setSituacao(rs.getString("situacao"));
				aux.setModalidade(rs.getString("modalidade"));
				aux.setCliente(rs.getString("cliente"));
				aux.setTipo(rs.getString("tipo"));
				aux.setSexo(rs.getString("sexo"));
				aux.setEstadoCivil(rs.getString("estadocivil"));
				aux.setEndereco(rs.getString("endereco"));
				aux.setBairro(rs.getString("bairro"));
				aux.setCidade(rs.getString("cidade"));
				aux.setUf(rs.getString("uf"));
				aux.setCep(rs.getString("cep"));
				aux.setProfissao(rs.getString("profissao"));
				aux.setCpf(rs.getString("cpfcgc"));
				aux.setRg(rs.getString("rg"));
				aux.setDataNascimento(rs.getString("datanascimento"));
				aux.setEmail(rs.getString("email"));
				
				String [] fone = new String[4];
				fone[0] = rs.getString("fone1");
				fone[1] = rs.getString("fone2");
				fone[2] = rs.getString("fone3");
				fone[3] = rs.getString("fone4");
				
				aux.setFone(fone);
				aux.setObs(rs.getString("obs"));
				
				temp.add(aux);
				
			}while (rs.next());
			
			associados = new Associado[temp.size()];
			for (int i = 0; i < temp.size(); i++) {
				associados[i] = temp.get(i);
			}
		}
	}catch (SQLException e) {
		e.printStackTrace();
	}
	
	
	return associados;
	
}

public static Associado [] pesquisar (String str) {
	Connection con = null;
	Statement st = null;
	Associado [] associados = null;
	
	try {
		con = getConnection();
		st = con.createStatement();
		
		String query = "select * from associados where cliente like '" + str + "%'";
		
		ResultSet rs = st.executeQuery(query);

		if (rs.next()) {
			
			ArrayList <Associado> temp = new ArrayList <Associado> (); 
			do {
				Associado aux = new Associado ();
				aux.setAdesao(rs.getInt("adesao"));
				aux.setCliente(rs.getString("cliente"));
				
				temp.add(aux);
				
			}while (rs.next());
			
			associados = new Associado[temp.size()];
			for (int i = 0; i < temp.size(); i++) {
				associados[i] = temp.get(i);
			}
		}
	}catch (SQLException e) {
		e.printStackTrace();
	}
	
	
	return associados;
	
}


public static Associado [] pesquisar () {
	Connection con = null;
	Statement st = null;
	Associado [] associados = null;
	
	try {
		con = getConnection();
		st = con.createStatement();
		
		String query = "select * from associados order by cliente";
		
		ResultSet rs = st.executeQuery(query);

		if (rs.next()) {
			
			ArrayList <Associado> temp = new ArrayList <Associado> (); 
			do {
				Associado aux = new Associado ();
				aux.setAdesao(rs.getInt("adesao"));
				aux.setCodfranqfunc(rs.getInt("codfranqfunc"));
				aux.setDataCadastro(rs.getString("datacadastro"));
				aux.setSituacao(rs.getString("situacao"));
				aux.setModalidade(rs.getString("modalidade"));
				aux.setCliente(rs.getString("cliente"));
				aux.setTipo(rs.getString("tipo"));
				aux.setSexo(rs.getString("sexo"));
				aux.setEstadoCivil(rs.getString("estadocivil"));
				aux.setEndereco(rs.getString("endereco"));
				aux.setBairro(rs.getString("bairro"));
				aux.setCidade(rs.getString("cidade"));
				aux.setUf(rs.getString("uf"));
				aux.setCep(rs.getString("cep"));
				aux.setProfissao(rs.getString("profissao"));
				aux.setCpf(rs.getString("cpfcgc"));
				aux.setRg(rs.getString("rg"));
				aux.setDataNascimento(rs.getString("datanascimento"));
				aux.setEmail(rs.getString("email"));
				
				String [] fone = new String[4];
				fone[0] = rs.getString("fone1");
				fone[1] = rs.getString("fone2");
				fone[2] = rs.getString("fone3");
				fone[3] = rs.getString("fone4");
				
				aux.setFone(fone);
				aux.setObs(rs.getString("obs"));
				
				temp.add(aux);
				
			}while (rs.next());
			
			associados = new Associado[temp.size()];
			for (int i = 0; i < temp.size(); i++) {
				associados[i] = temp.get(i);
			}
		}
	}catch (SQLException e) {
		e.printStackTrace();
	}
	
	
	return associados;
	
}

/**
 * 
 * @param associado
 */
public static void excluir (String associado){
	Connection con = null;
	Statement st =null;
	
	try {
		con = getConnection();
		st = con.createStatement();
		
		DependentesAssociadosDAO.excluir("adesao", associado);			
			
		String query = "delete from associados where adesao='" + associado + "'";
		st.execute(query);
		
	}catch (SQLException e) {
		e.printStackTrace();
	}finally {
		try {
			st.close();
			con.close();
		}catch(SQLException e) {}
	}
			
}

}
[/code]

até mais, abraço a todos!!

Eu tenho uma pergunta que não tem muito haver com o tópico…
Ai tem três pesquisar, cada um com parâmetros diferentes… isso seria poliformismo, sobrecarga ou o que? :roll:

Prezado Dougufpa,

Muito obrigado pelas considerações a respeito da escolha da ide. Optei de momento por seguir sua opinião que alias, achei melhor ainda para nos forçar a aprender mais coisas, como por exemplo, vivenciar diretamente o código. feito isso, fiz a primeira tentativa, usando seu próprio código do exemplo que me enviou acima. Só que ao compilar, deu o seguinte erro:

ControleCadastrarCliente.java:7: cannot resolve symbol
symbol : class CadastrarCliente
location : ControleCadastrarCliente
cadastroCliente = new CadastrarCliente();
2 errors

Onde é que estou errando? Salvei os arquivos: ControleCadastrarCliente.java e
CadastrarCliente.java

Um abraço,
[/img]

Respondendo o Uchiha_Itachi:

Isto eh sobrecarga de metodo.

Amamorim, eu salvei como CadastrarCliente.java e ControleCadastrarCliente.java, ambos compilaram e rodaram perfeitamente.

Uma dúvida, salvou no mesmo projeto ?

Agora estou estudando a conexão com o banco de dados…
valeu Doug…

abs
Rafael

grande Doug, belo código esse, bem explicado, mas essa package, ela se encontra onde ? pois ao compilar, deu vários errinhos, relacionados a essa package.

valeu
Rafael

[quote=“marcosbrandao”]Respondendo o Uchiha_Itachi:

Isto eh sobrecarga de metodo.[/quote]

Obrigado! :wink:

Prezado Amamorim,

     Primeiramente agradeço pelos elogios e tenho o prazer de compartilhar e ver a sua força de vontade de aprender e só cometemos erros quando sabemos o conteúdo e quando estudamos.
     Sobre o erro que está acontecendo ele se encontra nesse trecho
     [code] cadastroCliente = new CadastrarCliente();[/code]
     Isso por que simplesmente, java é muito sensível, ou seja, ele distinguem letras maiúsculas de minúsculas, pode ser isso, não estou certo a respeito, pelo fato de o erro estar dando na outra classe. Seria otimo se mostra-se o código por inteiro. Pode ter errado algo na classe CadastrarCliente.java. Seria interessante se mostra-se o seu código para ver qual o erro.
     Espero sua resposta ou dúvida a respeito, pra mostrar com a as classes funcionam, veja abaixo a figura da Interface.

[quote]grande Doug, belo código esse, bem explicado, mas essa package, ela se encontra onde ? pois ao compilar, deu vários errinhos, relacionados a essa package.

valeu
Rafael[/quote]

     Prezado [b]Itatiba00[/b],

     Primeiramente obrigado por fazer a pergunta. Brevemente vou explicar o que significa o package de forma bem grotesca, mas fácil de entender.
     O package relaciona ou faz a comunicação de uma classe que está salva em outro diretório. Por exemplo, eu poderia muito bem ter salvado a classe CadastrarUsuário em  "c:\Meus documentos\projeto\nomedoprojeto\interfaces" e a classe ControleCadastrarClientes.java "c:\Meus documentos\projeto\nomedoprojeto\controle". O package vai chamar a classe CadastrarUsuario.java (que é uma interface e está no diretorio interface) para ser usada ou instanciada, pela classe ControleCadastrarUsuario.java (que controla ou chama as demais classes e está no diretorio controle). Espero que tenha intendido!! explique de forma bem grotesca, mas simples de entender, caso contrario pode perguntar.
     Voltando a pergunta. O package você não deve utilizar, isso porque esse projeto inclui em torno de umas 30 classes, e eu utilizei o package pra separar em pastas as classes para ficar mais fácil de fazer a manutenção:
     Exemplo: para as Interfaces criei uma pasta [i]Interface[/i] e coloquei todas as classes para interfaces la dentro;
                    para a conexão com o banco de dados criei uma pasta [i] DAO[/i] e coloquei todas as classes com conexoes la dentro;
                    Para controlar tudo criei um diretório [i]controle[/i] que possui o controle de tudo, tipo uma classe para controlar as conexoes, outra pra controlar as interfaces e outra que controla tudo. Isso pode se chamar de modularização, pelo menos eu chamo assim :)

                     Ou seja, para ficar tudo organizado e fácil de usar, houve a necessidade de organizar a arquitetura toda em pastas. Lógico que tenho que dar credito também ao meu colega [b]rodolfocoutinho[/b], que estuda na mesma classe que a minha e faz parte aqui do forum, nós fizemos esse projeto pra uma empresa de plano de saúde.
                   
       Bem acho que estou me alongando muito, espero ter ajudado, qualquer coisa, perguntem.. 
       "Não existe pergunta besta, e sim aquele besta que não pergunta!"

Abraço a todos!!!

Caro Dougufpa,

Consegui rodar o programa. Descobri o erro; era mesmo o case sensitive do Java!!.. Foi bom ter acontecido! Já mexi bastante com a tela de cadastrar cliente. Estou entusiamado e gostaria de mais 2 ajudinhas de momento:

1 - Criar 2 botões para navegação entre os registros: proximo e anterior…

2 - Criei um banco de dados no acces e gostaria de já implementar isso. como é que eu faço isso? ou seja receber os dados desta tela de cadastro de cliente e gravar no banco de dados? meu banco é: Cliente.mdb e tem apenas os campos referenciados na classe cadastrar clientes…

Conto mais uma vez com sua ajuda e/ou dos demais colegas também… A coisa tá indo…

Obrigado a todos,

Edson
edson.amorim@oi.com.br

[quote=“Uchiha_Itachi”]Eu tenho uma pergunta que não tem muito haver com o tópico…
Ai tem três pesquisar, cada um com parâmetros diferentes… isso seria poliformismo, sobrecarga ou o que? :roll:[/quote]

Seria sobrecarga (overload) que é um tipo de polimorfismo estático.

Pro pessoal que tá querendo conectar java com access.

http://www.portaljava.com/home/modules.php?name=Content&pa=showpage&pid=5

Falou