SwingWorker

28/11/2019

0

Boa Tarde!


Preciso de uma ajuda.

Estou desenvolvendo um programa onde envolve rotas, diante disso eu consegui passar pra um .txt as longitude e latitude de todas as cidades, e isso me gerou um arquivo com 5565 linhas com 4 lunas.
É um trabalho pra faculdade e preciso usar Thread mas descobri que se eu gerar um Thread pelo frame do swing ele não vai conseguir lidar com tantos dados de uma maneira funcional,.
Descobri o swingWorker mas estou tendo grande dificuldade para implementar no código, e preciso que faça essa leitura pois eu irei pegar esse valores processados pela Thread e jogar em um JCOMBOX, que ira funcionar como filtro de acordo
com a escolha do usuário, abaixo estará meu código com a Thread padrão, que não está funcional.

package xyz.utilidades;

import java.io.BufferedReader;
import java.io.FileReader;

public class Cidade {

private String cidadeOrigem;
private String cidadeDestino;
private String[][] dados;
private String nomeDoArquivo = "cidades.txt";

public Cidade() {
}

public Cidade(String cidadeOrigem) {
this.cidadeOrigem = cidadeOrigem;
}

public String[] getCidades(String estado) {
int numeroDeCidades = 0;
int j = 0;
//pega o número de cidades para a criação da array
for (int i = 0; i < dados.length; i++) {
if (dados[i][1].equals(estado)) {
numeroDeCidades++;
}
}
String[] cidades = new String[numeroDeCidades];
for (int i = 0; i < dados.length; i++) {
if (dados[i][1].equals(estado)) {
cidades[j] = dados[i][0];
j++;
}
}

return cidades;
}

public String[] getEstados() {
String[] estados = new String[26];
estados[0] = dados[0][1];
int j = 1;
int cont = 0;

for (int i = 0; j < 26; i++) {
for (int k = 0; k <= j; k++) {
if (dados[i][1].equals(estados[k])) {
cont++;
}
}
if (cont == 0) {
estados[j] = dados[i][1];
j++;
}
cont = 0;
}

return estados;
}

public String getCidadeOrigem() {
return cidadeOrigem;
}

public void setCidadeOrigem(String cidadeOrigem) {
this.cidadeOrigem = cidadeOrigem;
}

public String getCidadeDestino() {
return cidadeDestino;
}

public void setCidadeDestino(String cidadeDestino) {
this.cidadeDestino = cidadeDestino;
}

public void carregarDados() throws Exception {

//TUDO COMENTADO É PARTE DO THREAD
BufferedReader reader = new BufferedReader(new FileReader(nomeDoArquivo));
dados = new String[5565][4];

// Thread pacoca = new Thread() {
// try {
// BufferedReader reader = new BufferedReader(new FileReader(nomeDoArquivo))
// String linha;
// dados = new String[5565][4];
// int cont = 0;
//
// while ((linha = reader.readLine()) != null) {
// String[] partes = linha.split("/");
// for (int i = 0; i < 4; i++) {
// dados[cont][i] = partes[i];
// }
// cont++;
// }
// } catch(Exception e) {
// throw new Exception(e.getMessage());
// }
// }.start();

Thread thread1 = new Thread() {
@Override
public void run() {
try {
String linha;
dados = new String[5565][4];
int cont = 0;

while ((linha = reader.readLine()) != null) {
String[] partes = linha.split("/");
for (int i = 0; i < 4; i++) {
dados[cont][i] = partes[i];
}
cont++;
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
};
thread1.start();
//
// Thread thread2 = new Thread() {
// @Override
// public void run() {
// try {
// String linha;
// int cont = 0;
//
// while ((linha = reader.readLine()) != null) {
// if (cont < 2701) {
//
// } else {
// String[] partes = linha.split("/");
// for (int i = 0; i < 4; i++) {
// dados[cont][i] = partes[i];
// }
// cont++;
// }
// }
// } catch (Exception e) {
// System.out.println(e.getMessage());
// }
// }
// };
//
// thread2.start();
//
// thread1.join();
// thread2.join();
}
}
Raphael Santana

Raphael Santana

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar