Boa noite a todos,
Embora eu tenha feito um curso longo de Java e aprendido muito nele, eu fiquei 3 anos sem encostar um dedo em programação, logo após o término do curso. (estudando para vestibulares)
Ou seja, sou iniciante em Java novamente, apesar de estar com uma boa facilidade para aprender coisas, já que de certa forma é uma revisão.
Vamos ao problema:
Preciso fazer um programa que receba dados (nos respectivos Textfields), e quando o usuário apertar “Adicionar”, os dados sejam salvos em um arquivo (não necessariamente txt, acho que pra função que preciso, nem pode ser .txt)
Esses dados salvos são acessados pelo proprio programa, que pega somente o NOME da pessoa, no arquivo salvo, e coloca numa JList, e quando selecionada, abre um novo Frame com os dados todos da pessoa (também retirado do arquivo).
A questão é que a cada pessoa adicionada, é um novo nome pra JList, e isso não me vem a cabeça como fazer.
Não consegui, mesmo pesquisando, achar algum lugar que explique como fazer o programa pegar dados de um arquivo (ou outro método) e usar essas informações no programa, salvando-as em strings que serão transmitidas por JLabels.
Como estou a muito tempo sem programar, o código pode estar bagunçado, mas tentei comentar quando achei necessário… Existe algum ‘template’ pra organização de código? (Digo basicamente mesmo, como separar cada parte dele).
Vamos ao código.
Até agora, ele faz tudo… menos o que eu quero, salvar os dados em um arquivo a parte, e ler esse arquivo para coletar dados.
[code]import javax.swing.;
import javax.swing.event.;
import javax.swing.JOptionPane;
import java.awt.;
import java.awt.event.;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Formatter;
import java.io.File;
public class Cadastro extends JFrame {
//Declaração
// Objetos da GUI
private JButton lista, editar, adiciona, limpar;
// Declaracao Frame inicial
public JPanel pp, pnovo, p1, p2, p3, p4, p5;
private JLabel label1, nome, idade, sexo, tel, enf, nulo;
private JTextField nome2, idade2, tel2;
private JRadioButton masc, fem;
private ButtonGroup sexo2;
private JTextArea enferm;
// Declaracao Frame secundaria
private JFrame lFrame;
private JPanel fp2;
private JLabel pac;
private JList pacientes;
private JButton ver;
private String teste[]=
{
“Teste 1”, “Teste 2”, “Teste 3”, “Teste 4”, “Teste 5”, “Teste 6”, “Teste 7”
};
// Declaracao Frame Terciaria
private JFrame dFrame;
private JPanel fp3;
// Declaracao Geral
private Container cont;
private boolean toggle = true;
static Formatter fmt;
String data[][];
static String f = (“pacientes”);
// Layouts da GUI
private FlowLayout lp1, lp2, lp3;
public GridLayout gl1, gl2, gl3;
public BorderLayout bl1;
public Cadastro(){
//Criando e personalizando a GUI
super(“Controle de pacientes”);
bl1 = new BorderLayout(2,1);
gl2 = new GridLayout(5,1);
gl3 = new GridLayout(2,1);
Container cont = getContentPane();
cont.setLayout(bl1);
nulo = new JLabel(" ");
pp = new JPanel();
pnovo = new JPanel();
p1 = new JPanel();
p2 = new JPanel();
p3 = new JPanel();
p4 = new JPanel();
p5 = new JPanel();
//Labels, Textfields, componentes da GUI
//Painel Principal
cont.add(pp, BorderLayout.NORTH);
pp.setLayout(new GridLayout(1,2));
JButton lista = new JButton ("Lista de Pacientes");
pp.add(lista);
ButtonHandler handler = new ButtonHandler();
lista.addActionListener(handler);
pp.setVisible(true);
//Painel "Novo"
pnovo.setLayout(gl2);
cont.add(pnovo);
pnovo.setVisible(true);
pnovo.add(p1);
pnovo.add(p2);
pnovo.add(p3);
pnovo.add(p4);
nome = new JLabel("Nome: ");
idade = new JLabel(" Idade: ");
sexo = new JLabel("Sexo: ");
enf = new JLabel("Enfermidade: ");
nome2 = new JTextField(25);
idade2 = new JTextField(10);
masc = new JRadioButton("M",false);
fem = new JRadioButton("F",true);
sexo2 = new ButtonGroup();
sexo2.add(masc);
sexo2.add(fem);
tel = new JLabel("Telefone: ");
tel2 = new JTextField(10);
enferm = new JTextArea(3,23);
adiciona = new JButton("Adicionar");
limpar = new JButton("Limpar");
p1.setVisible(true);
p2.setVisible(true);
p3.setVisible(true);
p4.setVisible(true);
p1.setLayout(new BorderLayout());
p2.setLayout(new GridLayout(1,5));
p3.setLayout(new GridLayout(1,3));
p4.setLayout(new BorderLayout());
p1.add(nome, BorderLayout.WEST);
p1.add(nome2, BorderLayout.EAST);
p2.add(tel);
p2.add(tel2);
p2.add(nulo);
p2.add(idade);
p2.add(idade2);
p2.add(nulo);
p3.add(sexo);
p3.add(masc);
p3.add(fem);
p4.add(enf, BorderLayout.WEST);
p4.add(enferm, BorderLayout.EAST);
p5.add(adiciona);
p5.add(limpar);
//ButtonHandlers
ButtonHandler2 handler2 = new ButtonHandler2();
limpar.addActionListener(handler2);
ButtonHandler3 handler3 = new ButtonHandler3();
adiciona.addActionListener(handler3);
cont.add(p5, BorderLayout.SOUTH);
setSize (355,200);
setResizable(false);
setVisible(true);
// Frame Listas /////////////////////////////////////////////////////////////
// GUI Frame2
lFrame = new JFrame(“Lista”);
fp2 = new JPanel();
fp2.setLayout(new BorderLayout(5,5));
lFrame.add(fp2);
pac = new JLabel("Pacientes Cadastrados: ");
pacientes = new JList(teste);
pacientes.setVisibleRowCount(5);
pacientes.setSelectionMode( ListSelectionModel.SINGLE_SELECTION);
ver = new JButton ("Ver");
fp2.add(pac, BorderLayout.NORTH);
fp2.add(pacientes);
fp2.add(new JScrollPane(pacientes));
fp2.add(ver, BorderLayout.SOUTH);
pacientes.addListSelectionListener(
new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e){
dFrame.setVisible(true);
}
}
);
lFrame.setResizable(false);
fp2.setVisible(true);
lFrame.setSize(300,200);
lFrame.setLocation (355,0);
// Frame Dados /////////////////////////////////////////////////////////////
// GUI Frame3
dFrame = new JFrame(“Dados”);
fp3 = new JPanel();
fp3.setLayout(new BorderLayout(5,5));
dFrame.add(fp3);
dFrame.setResizable(false);
dFrame.setSize(655,200);
dFrame.setLocation(0,200);
}
void FormatOutput(String name, String phone, String age, String sex, String illness) throws IOException
{
fmt.format("%1$-30s %2$-13s %3$-11s %4$-7s %5$-4s%n", name, phone, age, sex, illness);
}
public static void main(String[] args) throws IOException
{
if(!(new File(f+".txt").exists())){
String[][] data = {
{"", "", "", "", ""},
};
Cadastro formatt = new Cadastro();
FileWriter out = new FileWriter("pacientes.txt", true);
BufferedWriter buf = new BufferedWriter(out);
fmt = new Formatter(buf);
fmt.format("%1$2s%n", "Nome Telefone Idade Sexo Enfermidade");
for(int n=0; n<data.length; n++){
formatt.FormatOutput(data[n][0], data[n][1], data[n][2], data[n][3], data[n][4]);
}
fmt.close();
}
else{
Cadastro app = new Cadastro();
app.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
}
}
private class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
lFrame.setVisible(true);
}
}
private class ButtonHandler2 implements ActionListener{
public void actionPerformed(ActionEvent e){
nome2.setText("");
tel2.setText("");
idade2.setText("");
enferm.setText("");
}
}
private class ButtonHandler3 implements ActionListener{
public void actionPerformed(ActionEvent e){
}
}
}[/code]
Muito obrigado a todos.