Olá Pessoal, estou com dificuldade de fazer a leitura de um arquivo (txt) gerado pelo meu sistema repetidamente. Para ser mais claro, meu sistema gera orçamentos e depois permite visualizar ou imprimir esses orçamentos. O arquivo txt é gerado normalmente e quando se clica no botão imprimir aparecem as opções de impressão. Para a 1ª Vez tudo ocorre perfeitamente, mas para as vezes subsequentes ele não pega o conteúdo do novo arquivo gerado. Segue abaixo os código utilizados na classe principal e na classe Relatório.
Classe Principal
public String orcamento;
public List<OrcamentoBean> orcamentos;
private void btImprimirActionPerformed(java.awt.event.ActionEvent evt) {
if (ro == null) {
ro = new RelOrcamento();
ro.setVisible(true);
} else {
ro.setVisible(true);
ro.setState(NORMAL);
}
OrcamentoBean ob = new OrcamentoBean();
orcamentos = new ArrayList();
orcamento = tfOrcamento.getText() ;
ob.setId(Integer.parseInt(orcamento));
orcamentos.add(ob);
gravaArquivo();
}
private void gravaArquivo() {
File f;
try {
f=new File("orcamento.txt");
FileOutputStream fos = new FileOutputStream(f);
String stringOrcamento = orcamento;
try {
fos.write(stringOrcamento.getBytes());
fos.close();
} catch (IOException ex) {
ex.printStackTrace();
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
Relatório
import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.JasperPrint;
import java.io.*;
public class RelOrcamento extends javax.swing.JFrame {
HashMap parametros;
JasperPrint jp;
JasperViewer jrv;
ConexaoBD con_orcamentos;
String orcamento;
public RelOrcamento() {
initComponents();
leArquivo();
tfCodOrcamento.setText(orcamento);
}
public void leArquivo() {
try {
BufferedReader in = new BufferedReader(new FileReader("orcamento.txt"));
String str;
while((str = in.readLine()) != null){
//JOptionPane.showMessageDialog(null, str);
orcamento = str;
}
in.close();
}catch (Exception ex) {
ex.printStackTrace();
}
}
private void btImprimirActionPerformed(java.awt.event.ActionEvent evt) {
if(cbServicos.isSelected()){
try {
con_orcamentos = new ConexaoBD();
parametros = new HashMap();
parametros.put("orcamento", Integer.parseInt(orcamento));
jp = JasperFillManager.fillReport("./Relatorios/orcamento_serv.jasper", parametros, con_orcamentos.conecta());
jrv = new JasperViewer(jp, false);
jrv.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
jrv.setVisible(true);
jrv.setExtendedState(MAXIMIZED_BOTH);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao Tentar Imprimir Relatório.");
e.printStackTrace();
}finally{
con_orcamentos.desonecta();
}
}else if(cbProdutos.isSelected()){
try {
con_orcamentos = new ConexaoBD();
parametros = new HashMap();
parametros.put("orcamento", Integer.parseInt(orcamento));
jp = JasperFillManager.fillReport("./Relatorios/orcamento_prod.jasper", parametros, con_orcamentos.conecta());
jrv = new JasperViewer(jp, false);
jrv.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
jrv.setVisible(true);
jrv.setExtendedState(MAXIMIZED_BOTH);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao Tentar Imprimir Relatório.");
e.printStackTrace();
}finally{
con_orcamentos.desonecta();
}
}else if(cbTotal.isSelected()){
try {
con_orcamentos = new ConexaoBD();
parametros = new HashMap();
parametros.put("orcamento", Integer.parseInt(orcamento));
jp = JasperFillManager.fillReport("./Relatorios/orcamento.jasper", parametros, con_orcamentos.conecta());
jrv = new JasperViewer(jp, false);
jrv.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
jrv.setVisible(true);
jrv.setExtendedState(MAXIMIZED_BOTH);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao Tentar Imprimir Relatório.");
e.printStackTrace();
}finally{
con_orcamentos.desonecta();
}
}
}
O que preciso é fazer com que o método leArquivo seja lido toda vez que a tela de relatórios seja aberta e que para cada orçamento pesquisado, ele busque as informações desse orçamento, o que não está acontecendo
Obrigado a todos