.txt shows no old messages, takes only the last and displays

Asked

Viewed 66 times

0

What the implementation is: volley the result of a question (Qtd hit and Qtd error) and showcase on another screen.

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

problem: if I close the application and then run again, it disregards what I had and shows as if there was nothing in txt, ie it shows 0 hit and 0 error and still says it is the first move. wanted you to show the number of previous moves and the hit and miss on each move.

home screen

inserir a descrição da imagem aqui

when you click to see the result this screen appears

inserir a descrição da imagem aqui

what I wanted to appear

inserir a descrição da imagem aqui

package;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;

public class TelaExibir extends JFrame {

private JPanel contentPane;
private JTextArea textArea;

public TelaExibir() {
    setFocusable(true);
    setUndecorated(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 285, 164);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    textArea = new JTextArea();
    JScrollPane scroll = new JScrollPane(textArea);
    scroll.setBounds(0, 0, 285, 164);
    contentPane.add(scroll);

    setLocationRelativeTo(null);
    setResizable(false);
}

public JTextArea getTextArea() {
    return textArea;
}

public void setTextArea(JTextArea textArea) {
    this.textArea = textArea;
}
}

package;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JRadioButton;

public class TelaPainel extends JFrame {

private JPanel contentPane;
private JButton btVerResultado;
private JButton btFecharResultado;
private JButton btSalvarRespostas;
private ButtonGroup grupo;
private JRadioButton radioDois;
private JRadioButton radioUm;

public TelaPainel() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setLayout(null);
    setContentPane(contentPane);

    btVerResultado = new JButton("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;
}
}

model package;

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();
}
}

model package;

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());
}
}

1 answer

0


to get the solution I changed 2 methods that are commented in the code
model package;

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);

    }
}

}

  • That is the solution?

  • yes is the solution

  • 1

    Then edit the answer and explain how you arrived at the solution. Simply playing code doesn’t help anyone solve the problem if they have one similar to yours. It is important to explain too(as I did in the 2 answers I gave you)

  • but it is commented the 2 methods that I changed

  • Gabriella, I recommend you read this link and see how to write a good answer. Yours is not cool.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.