.txt does not show old messages, takes only the last one and displays

0

What the application consists of: saves the result of a question (qtd hit and qtd error) strong> on another screen.

What the application is doing : Saves everything and only displays the result of the moment the application opens, it ignores everything that was saved before. for example: if I play, save and close the application it does not show my previous progress. I wanted it to show my progress from previous moves, like Figure 3.

problem: If I close the application and then run again, it disregards what it has and shows as if there is nothing in txt, ie it shows 0 hit and 0 error and still says it's the first move . wanted to show the number of previous moves and the correctness and error in each move.

home screen

Clickingonseeresultappearsthisscreen

WhatIwantedtoshowup

packageview;

importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;importjavax.swing.border.EmptyBorder;publicclassTelaExibirextendsJFrame{privateJPanelcontentPane;privateJTextAreatextArea;publicTelaExibir(){setFocusable(true);setUndecorated(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100,100,285,164);contentPane=newJPanel();contentPane.setBorder(newEmptyBorder(5,5,5,5));setContentPane(contentPane);contentPane.setLayout(null);textArea=newJTextArea();JScrollPanescroll=newJScrollPane(textArea);scroll.setBounds(0,0,285,164);contentPane.add(scroll);setLocationRelativeTo(null);setResizable(false);}publicJTextAreagetTextArea(){returntextArea;}publicvoidsetTextArea(JTextAreatextArea){this.textArea=textArea;}}

packageview;

importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.ButtonGroup;importjavax.swing.JButton;importjavax.swing.JLabel;importjavax.swing.JRadioButton;publicclassTelaPainelextendsJFrame{privateJPanelcontentPane;privateJButtonbtVerResultado;privateJButtonbtFecharResultado;privateJButtonbtSalvarRespostas;privateButtonGroupgrupo;privateJRadioButtonradioDois;privateJRadioButtonradioUm;publicTelaPainel(){setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100,100,450,300);contentPane=newJPanel();contentPane.setLayout(null);setContentPane(contentPane);btVerResultado=newJButton("ver resultado");
    btVerResultado.setBounds(236, 156, 121, 23);
    contentPane.add(btVerResultado);

    btFecharResultado = new JButton("fechar resultado");
    btFecharResultado.setBounds(236, 156, 121, 23);
    btFecharResultado.setVisible(false);
    contentPane.add(btFecharResultado);

    btSalvarRespostas = new JButton("Salvar respostas");
    btSalvarRespostas.setBounds(22, 156, 131, 23);
    contentPane.add(btSalvarRespostas);

    JLabel lblQueAnimal = new JLabel("Que animal \u00E9 esse?");
    lblQueAnimal.setBounds(22, 45, 113, 14);
    contentPane.add(lblQueAnimal);

    radioUm = new JRadioButton("Cachorro");
    radioUm.setBounds(26, 75, 109, 23);
    contentPane.add(radioUm);

    radioDois = new JRadioButton("Gato");
    radioDois.setBounds(26, 113, 109, 23);
    contentPane.add(radioDois);

    grupo = new ButtonGroup();
    grupo.add(radioUm);
    grupo.add(radioDois);
    setVisible(true);
}

public JButton getBtVerResultado() {
    return btVerResultado;
}

public void setBtVerResultado(JButton brVerResultado) {
    this.btVerResultado = brVerResultado;
}

public JButton getBtFecharResultado() {
    return btFecharResultado;
}

public void setBtFecharResultado(JButton btFecharResultado) {
    this.btFecharResultado = btFecharResultado;
}

public JButton getBtSalvarRespostas() {
    return btSalvarRespostas;
}

public JRadioButton getRadioDois() {
    return radioDois;
}

public void setRadioDois(JRadioButton radioDois) {
    this.radioDois = radioDois;
}

public JRadioButton getRadioUm() {
    return radioUm;
}

public void setRadioUm(JRadioButton radioUm) {
    this.radioUm = radioUm;
}

public void setBtSalvarRespostas(JButton btSalvarRespostas) {
    this.btSalvarRespostas = btSalvarRespostas;
}
}

package template;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

public class AlunoArquivo {

public static File arquivo = new File("exibir.txt");
static DadoResultadoAluno dra = new DadoResultadoAluno();

public static List<String> Read(String Caminho) {
    List<String> conteudo = new ArrayList<>();

    try {
        FileReader arq = new FileReader(arquivo);
        BufferedReader lerArq = new BufferedReader(arq);
        String linha = "";
        try {
            while (linha != null) {
                conteudo.add(linha);
                linha = lerArq.readLine();
            }
            arq.close();
            return conteudo;
        } catch (IOException ex) {
            System.out.println("Erro: Não foi possível ler o arquivo!");
        }
    } catch (FileNotFoundException ex) {
        System.out.println("Erro: Arquivo não encontrado!");
    }
    return null;
}

public static boolean Write(String Texto) {
    try {
        if (!arquivoExiste()) {
            arquivo.createNewFile();
            System.out.println("not");
        } 

        System.out.println("Yes");
        FileWriter arq = new FileWriter(arquivo, true);
        PrintWriter gravarArq = new PrintWriter(arq);
        gravarArq.println(Texto);
        gravarArq.close();

        return true;
    } catch (IOException e) {
        System.out.println(e.getMessage());
        return false;
    }
}

public static void salvar(DadoResultadoAluno dra) {

    String print = dra.getQtdAcertoPlanificacao() + ";" + dra.getQtdErroPlanificacao();

    if (AlunoArquivo.Write(print)) {
        System.out.println("Arquivo salvo com sucesso!");
    } else {
        System.out.println("Erro ao salvar o arquivo!");
    }
}

public static boolean arquivoExiste() {
    return arquivo.exists();
}
}

package template;

public class DadoResultadoAluno {

private int qtdAcertoPlanificacao = 0;
private int qtdErroPlanificacao = 0;
private int contVezesSalvar = 0;

public int getQtdAcertoPlanificacao() {
    return qtdAcertoPlanificacao;
}

public void setQtdAcertoPlanificacao(int qtdAcertoPlanificacao) {
    this.qtdAcertoPlanificacao = qtdAcertoPlanificacao;
}

public int getQtdErroPlanificacao() {
    return qtdErroPlanificacao;
}

public void setQtdErroPlanificacao(int qtdErroPlanificacao) {
    this.qtdErroPlanificacao = qtdErroPlanificacao;
}

public int getContVezesSalvar() {
    return contVezesSalvar;
}

public void setContVezesSalvar(int contVezesSalvar) {
    this.contVezesSalvar = contVezesSalvar;
}
}

package control;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import modelo.AlunoArquivo;
import modelo.DadoResultadoAluno;
import visao.TelaExibir;
import visao.TelaPainel;

public class ControleTelaPainel implements ActionListener {

private DadoResultadoAluno dra = new DadoResultadoAluno();
TelaExibir exibir = new TelaExibir();
private TelaPainel tp;

public ControleTelaPainel(TelaPainel tp) {
    this.tp = tp;
    this.tp.getBtFecharResultado().addActionListener(this);
    this.tp.getBtVerResultado().addActionListener(this);
    this.tp.getBtSalvarRespostas().addActionListener(this);
    lerResultados(0);

}

public void lerResultados(int indice) {
    List<String> linhas =  AlunoArquivo.Read("exibir.txt");

    if(linhas == null)
        return;

    dra.setQtdAcertoPlanificacao(Integer.parseInt(linhas.get(indice).split(";")[0]));
    dra.setQtdErroPlanificacao((Integer.parseInt(linhas.get(indice).split(";")[1])));
}

@Override
public void actionPerformed(ActionEvent e) {

    if (e.getSource() == tp.getBtFecharResultado()) {

        this.tp.getBtVerResultado().setVisible(true);
        this.tp.getBtFecharResultado().setVisible(false);

        exibir.setVisible(false);
    }

    else if (e.getSource() == tp.getBtSalvarRespostas()) {

        if (tp.getRadioUm().isSelected()) {
            dra.setQtdAcertoPlanificacao(dra.getQtdAcertoPlanificacao() + 1);
        } else if (tp.getRadioDois().isSelected()) {
            dra.setQtdErroPlanificacao(dra.getQtdErroPlanificacao() + 1);
        }
        dra.setContVezesSalvar(dra.getContVezesSalvar()+1);
        AlunoArquivo.salvar(dra);
    }

    else if (e.getSource() == tp.getBtVerResultado()) {

        exibir.getTextArea().setText("Na " + dra.getContVezesSalvar() + " jogada você fez " + dra.getQtdAcertoPlanificacao() + " acertos" + " e "
                + dra.getQtdErroPlanificacao() + " tentativas erradas");

        exibir.setVisible(true);
        this.tp.getBtFecharResultado().setVisible(true);
        this.tp.getBtVerResultado().setVisible(false);

    }
}
}

package control;

import visao.TelaPainel;

public class Main {

public static void main(String[] args) {
    ControleTelaPainel ctp = new ControleTelaPainel(new TelaPainel());
}
}
    
asked by anonymous 29.12.2017 / 22:32

1 answer

0

To get the solution I changed 2 methods that are commented out in the code
package template;

import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
  import java.io.PrintWriter;
 import java.nio.file.Files;
  import java.util.ArrayList;
 import java.util.List;

public class AlunoArquivo {

public static File arquivo = new File("exibir.txt");
static DadoResultadoAluno dra = new DadoResultadoAluno();

public static List<String> Read(String Caminho) {
    List<String> conteudo = new ArrayList<>();

    try {
        // Alterei a forma como lê o arquivo. Esse Files.readAllLines existe a partir do Java 1.7 em diante
        List<String> linhas = Files.readAllLines(arquivo.toPath());

        for (String linha : linhas) {
            conteudo.add(linha);
        }
    } catch (IOException ex) {
        System.out.println("Erro: Não foi possível ler o arquivo!");
    } catch (Exception ex) {
        System.out.println("Erro: Arquivo não encontrado!");
    }

    return conteudo;
}

public static boolean Write(String Texto) {
    try {
        if (!arquivoExiste()) {
            arquivo.createNewFile();
            System.out.println("not");
        }

        System.out.println("Yes");
        FileWriter arq = new FileWriter(arquivo, true);
        PrintWriter gravarArq = new PrintWriter(arq);
        gravarArq.println(Texto);
        gravarArq.close();

        return true;
    } catch (IOException e) {
        System.out.println(e.getMessage());
        return false;
    }
}

public static void salvar(DadoResultadoAluno dra) {

    String print = dra.getQtdAcertoPlanificacao() + ";" + dra.getQtdErroPlanificacao();

    if (AlunoArquivo.Write(print)) {
        System.out.println("Arquivo salvo com sucesso!");
    } else {
        System.out.println("Erro ao salvar o arquivo!");
    }
}

public static boolean arquivoExiste() {
    return arquivo.exists();
}

}

package control;

 import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
 import java.util.List;

      import modelo.AlunoArquivo;
 import modelo.DadoResultadoAluno;
    import visao.TelaExibir;
   import visao.TelaPainel;

 public class ControleTelaPainel implements ActionListener {

private DadoResultadoAluno dra = new DadoResultadoAluno();
TelaExibir exibir = new TelaExibir();
private TelaPainel tp;

public ControleTelaPainel(TelaPainel tp) {
    this.tp = tp;
    this.tp.getBtFecharResultado().addActionListener(this);
    this.tp.getBtVerResultado().addActionListener(this);
    this.tp.getBtSalvarRespostas().addActionListener(this);
}

@Override
public void actionPerformed(ActionEvent e) {

    if (e.getSource() == tp.getBtFecharResultado()) {

        this.tp.getBtVerResultado().setVisible(true);
        this.tp.getBtFecharResultado().setVisible(false);

        exibir.setVisible(false);
    }

    else if (e.getSource() == tp.getBtSalvarRespostas()) {
        //Zero os quantificadores para não gravar valor duplicado.
        dra.setQtdAcertoPlanificacao(0);
        dra.setQtdErroPlanificacao(0);

        if (tp.getRadioUm().isSelected()) {
            dra.setQtdAcertoPlanificacao(dra.getQtdAcertoPlanificacao() + 1);
        } else if (tp.getRadioDois().isSelected()) {
            dra.setQtdErroPlanificacao(dra.getQtdErroPlanificacao() + 1);
        }

        AlunoArquivo.salvar(dra);
    }

    else if (e.getSource() == tp.getBtVerResultado()) {

        List<String> linhas = AlunoArquivo.Read("exibir.txt");
        StringBuilder mensagem = new StringBuilder();

        /*
         * Agora eu recupero as linhas do arquivo e monto as mensagens aqui, pq assim posso fazer um loop no arquivo e ir concatenando as mensagens
         * de acordo com as tentativas
         */
        if (linhas != null && !linhas.isEmpty()) {
            for (int i = 0; i < linhas.size(); i++) {
                int qtdeAcerto = Integer.parseInt(linhas.get(i).split(";")[0]);
                int qtdeErro = Integer.parseInt(linhas.get(i).split(";")[1]);

                mensagem.append("Na " + (i+1) + " jogada você fez " + qtdeAcerto + " acertos e " + qtdeErro + " tentativas erradas\n");
            }
        }

        exibir.getTextArea().setText(mensagem.toString());
        exibir.setVisible(true);
        this.tp.getBtFecharResultado().setVisible(true);
        this.tp.getBtVerResultado().setVisible(false);

    }
}

}

    
02.01.2018 / 20:51