Boa tarde a todos,
Estou criando uma aplicação que faz a leitura de um arquivo .XML, gravando as informações em um .TXT
No entanto, tenho por objetivo em criar uma interface gráfica para o mesmo, onde peço a colaboração de vocês.
Estou utilizando as ferramentas do próprio Netbeans, onde a interface gráfica será básica..
A interface será composta por:
-jTextField que recebe o caminho do arquivo, após selecionar o mesmo, através do JFileChooser(Está Ok).
-jProgressBar e jLabel, para mostrar o progresso do processo.
-jButton, para iniciar o processo.
O problema está no momento em que clico no jButton para processar as informações, sabendo-se após efetuar o mesmo, a interface fica desabilitada para fazer outras informações, até que conclua a aplicação da classe que meu jButton chamou, ou seja, não consigo fechar a aplicação, somente pelo próprio Java.
E meu objetivo era que assim que chamasse a minha classe para efetuar a leitura do XML e gravar em um .txt, a cada registro gravado, incrementasse em meu jProgressBar..
Trecho da minha classe LerXML:
//esse trecho tempor objetivo, somente percorrer o arquivo para verificar a quantidade de registros para enviar para o meu jProgressBar1.setMaximum();
public int Contador() throws JDOMException, IOException{
SAXBuilder arq = new SAXBuilder();
Document docs = arq.build("C:\\Users\\Eduardo\\ArquivosXML\\LASER\\XML.xml");
Element eleme = docs.getRootElement();
List<Element> asdfg = eleme.getChildren();
int reg=0;
for (Element uuyy: asdfg){
reg++;
}
return reg;
}
.
.
.
.
.
int iop=0;
//Este for irá percorrer todo o arquivo, ou seja, a cada vez que ele roda, ele faz a leitura de um registro,
//portanto, criei um contador com a intenção de atualizar meu ProgressBar.
for (Element data : dadosAssinan) {
iop++;
frame = new JFXML();
frame.setjProgressBar1(iop);
frame.AtualizaLabel();
Classe JFrame (Interface gráfica):
//depois do initComponents();
classeleitor = new ClasseLeitor();
try {
jProgressBar1.setMaximum(classeleitor.Contador());
} catch (IOException ex) {
Logger.getLogger(JFXML.class.getName()).log(Level.SEVERE, null, ex);
}
.
.
.
// no final do código, criei dois métodos, pensando que poderia atualizar meu JFrame enquanto rodasse a minha Classe LerXML
void setjProgressBar1(int num){
jProgressBar1.setValue(num);
}
void AtualizaLabel(){
jLabel1.setText(Integer.toString(jProgressBar1.getValue()*100/jProgressBar1.getMaximum())+"%");
}
Ou seja, esse código, foram algumas tentativas, no entanto, aguardo por mais orientações.
Desde já Agradeço, Eduardo.
