Estou com o seguinte problema, sou iniciante em java e estou fazendo a tela de um cadastro de clientes que usa JLabels, JTextFields e JButtons. Gostaria de saber como fazer para salvar todos os dados digitados nos JTextFields em um arquivo(TXT) e depois joga-los dentro de uma tabela em um BD,por exemplo MySql, eu não sei que método usar para pegar esses dados do usuário e salva-los em um arquivo, de começo poderia ser txt mesmo. Em C eu usaria um gets para obter uma String do usuário, já em java eu não sei que método seria analogo a este exemplo em C. Desde já, agradeço!!! :?:
Bom, eu nao manjo de Swing, mas acho que vc pode fazer algo mais ou menos como:
-> Para pegar o conteudo do JTextField use o metodo getText().
-> Para gravar conteudo em um arquivo txt, primeiro crie uma instancia da classe PrintWriter
-> Apos ter criado o arquivo para gravar, pegue o conteudo de cada JTextField que vc quiser e use o metodo write() para gravar no arquivo
-> leia o tutorial de mysql que tem aqui no guj para ver como mexer com mysql.
Exemplo:
// Digamos que vc tenha criado 2 JTextField
JTextField campo1 = new JTextField();
JTextField campo2 = new JTextField();
// codigo da sua aplicacao...
// Abre o arquivo para gravar os dados
PrintWriter out = new BufferedWriter(new FileWriter("meu.arquivo"));
// Grava o conteudo dos JTextField
out.write(campo1.getText());
out.newLine();
out.write(campo2.getText());
// Fecha o arquivo que gravamos
out.close();
// seu programa continua.. se quiser, eh claro :)
So para demostrar como ler, vc poderia fazer assim:
BufferedReader in = new BufferedReader(new FileReader("meu.arquivo"));
String linha;
// le linha por linha e joga na tela
while ((linha = in.readLine()) != null)
System.out.println(linha);
in.close();
De uma olhada na documentacao sobre essas classes mostradas aqui, lhe ajudara muito.
[]'s
Rafael Steil
Viu Rafael, eu tentei usar o seu código só que deu um erro que eu não consegui resolver, será que teria como vc complementar o meu código com seu exemplo pra eu ver como que fica, pois eu não consigo decifrar o erro que tá dando.Segue abaixo o meu código:
[code]
import java.awt.;
import java.awt.event.;
import javax.swing.*;
public class teste extends JFrame{
public JButton salvar,
excluir,
cancelar;
public JLabel cod_loja,
sigla,
nome,
end,
bairro,
cidade,
estado,
cep,
fone_ddd,
fone,
cnpj,
i_e;
public JTextField cod_loja1,
sigla1,
nome1,
end1,
bairro1,
cidade1,
cep1,
fone_ddd1,
fone_ddd2,
fone1,
cnpj1,
i_e1;
public JComboBox estado1;
public String ufs[] = {"AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MG",
"MS","MT","PA","PB","PE","PI","PR","RJ","RN","RO","RR","RS","SC","SP","SE","TO"};
public teste()
{
//super("Teste");
Container c = getContentPane();
c.setLayout(null);
cod_loja = new JLabel("Código loja:");
c.add(cod_loja);
cod_loja1 = new JTextField();
c.add(cod_loja1);
sigla = new JLabel("Sigla:");
c.add(sigla);
sigla1 = new JTextField();
c.add(sigla1);
nome = new JLabel("Nome:");
c.add(nome);
nome1 = new JTextField();
c.add(nome1);
end = new JLabel("Endereço:");
c.add(end);
end1 = new JTextField();
c.add(end1);
bairro = new JLabel("Bairro:");
c.add(bairro);
bairro1 = new JTextField();
c.add(bairro1);
estado = new JLabel("Estado:");
c.add(estado);
estado1 = new JComboBox(ufs);
estado1.setMaximumRowCount( 6 );
estado1.setEditable(true);
c.add(estado1);
cep = new JLabel("CEP:");
c.add(cep);
cep1 = new JTextField();
c.add(cep1);
fone_ddd = new JLabel("Fone DDD:");
c.add(fone_ddd);
fone_ddd1 = new JTextField();
c.add(fone_ddd1);
fone_ddd2 = new JTextField();
c.add(fone_ddd2);
fone = new JLabel("Fone:");
c.add(fone);
fone1 = new JTextField();
c.add(fone1);
cnpj = new JLabel("CNPJ:");
c.add(cnpj);
cnpj1 = new JTextField();
c.add(cnpj1);
i_e = new JLabel("IE:");
c.add(i_e);
i_e1 = new JTextField();
c.add(i_e1);
salvar = new JButton("Salvar");
c.add(salvar);
excluir = new JButton("Excluir");
c.add(excluir);
cancelar = new JButton("Cancelar");
c.add(cancelar);
Insets insets = c.getInsets();
cod_loja.setBounds(25 + insets.left, 25 + insets.top, 75, 20);
cod_loja1.setBounds(92 + insets.left, 25 + insets.top, 75, 20);
sigla.setBounds(170 + insets.left, 25 + insets.top, 75, 20);
sigla1.setBounds(205 + insets.left, 25 + insets.top, 75, 20);
nome.setBounds(25 + insets.left, 50+ insets.top, 75, 20);
nome1.setBounds(65 + insets.left, 50+ insets.top, 250, 20);
end.setBounds(25 + insets.left, 75 + insets.top, 75, 20);
end1.setBounds(85 + insets.left, 75 + insets.top, 230, 20);
bairro.setBounds(25 + insets.left, 100 + insets.top, 75, 20);
bairro1.setBounds(65 + insets.left, 100 + insets.top, 102, 20);
estado.setBounds(170 + insets.left, 100+ insets.top, 75, 20);
estado1.setBounds(217 + insets.left, 100 + insets.top, 98, 20);
cep.setBounds(25 + insets.left, 125 + insets.top, 75, 20);
cep1.setBounds(55 + insets.left, 125 + insets.top, 75, 20);
fone_ddd.setBounds(135 + insets.left, 125 + insets.top, 75, 20);
fone_ddd1.setBounds(195 + insets.left, 125 + insets.top, 30, 20);
fone_ddd2.setBounds(225 + insets.left, 125 + insets.top, 90, 20);
fone.setBounds(25 + insets.left, 150 + insets.top, 75, 20);
fone1.setBounds(60 + insets.left, 150 + insets.top, 70, 20);
cnpj.setBounds(135 + insets.left, 150 + insets.top, 75, 20);
cnpj1.setBounds(172 + insets.left, 150 + insets.top, 70, 20);
i_e.setBounds(245 + insets.left, 150 + insets.top, 75, 20);
i_e1.setBounds(260 + insets.left, 150 + insets.top, 55, 20);
salvar.setBounds(25 + insets.left, 250 + insets.top, 85, 30);
excluir.setBounds(127 + insets.left, 250 + insets.top, 85, 30);
cancelar.setBounds(230 + insets.left, 250 + insets.top, 85, 30);
}
public static void main(String args[])
{
teste window = new teste();
Insets insets = window.getInsets();
window.setTitle("Cadastro de clientes");
window.setSize(360 + insets.left + insets.right,
350 + insets.top + insets.bottom);
window.setVisible(true);
teste app = new teste();
app.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}
}
[/code]
Opa, manjo praticamente nada de Swing mas acho que o exemplo que fiz da para entender. Tambem peco desculpas pelo codigo da resposta anterior, realmente estava errado. O que fiz agora foi adicionar o metodo saveData(), o qual pega uns campos do seu form e grava em um arquivo quando o botao “Salvar” eh clicado.
Nao coloquei exemplo com banco de dados pq dae ja precisa de muito mais codigo. Adicione o seguinte no seu programa:
public void saveData()
{
try {
BufferedWriter out = new BufferedWriter(new FileWriter("dados.txt"));
out.write("Codigo da loja: "+ cod_loja1.getText());
out.newLine();
out.write("Nome: "+ nome1.getText());
out.newLine();
out.write("Endereco: "+ end1.getText());
out.newLine();
out.close();
}
catch (IOException e) {
System.err.println("Erro de IO: "+ e);
e.printStackTrace();
}
}
agora, no construtor da sua classe, logo apos o codigo
salvar = new JButton("Salvar");
adicione o seguinte:
salvar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveData();
}
});
Compile e rode seu programa. Adicione alguns dados e clique em “Salvar”. O arquivo “dados.txt” devera ser criado.
Nao coloquei todos os campos por ser desnecessario para o exemplo.
Qualquer coisa, da um toque.
[]'s
Rafael Steil
Cara se vc não manja de Swing, imagine eu, quanto ao código deu certinho, ele salvou no dados.txt, isso já me quebrou um galhão,
Rafael deixa te fazer uma pergunta. Vc é certificado Programador Java pela Sun, me diz uma coisa, a prova é muito dificil, tem muito conteudo pra se estudar, poderia me dar uma opinião sobre livros de java, só não vale o java como programar que esse eu já tenho? De novo sobre o código, muito obrigado, eu já tinha esquecido de te agradecer.
como eu faço pra atulizar o arquivo .txt gerado ir adicionando novos cadastros cada vez que eu clicar no botão cadastrar. Não quero que sobreponha o arquivo e sim adicione novos cadastros a partir do primeiro. Desde já obrigado! 8)