Ho un editor di testo fatto in java.
Il testo viene visualizzato all'interno di un jtextpane
Quando leggo da filesystem un file di testo e lo voglio visualizzare con il mio editor, faccio comparire una jprogressbar di attesa caricamento file.
Quando arrivo all'istruzione
editor.setText(text);
dove editor è il mio jtextpane e text è il testo da visaulizzare a video, il programma si blocca
Penso sia un problema di comunicazione fra thread, ma non so risolverlo.
Ho provato anche ad usare le righe
codice:
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
editor.setText(text);
}
}
ma il programma si blocca lo stesso.
Sapete dirmi come risolvere il problema?
codice:
public void openFile(String fileName) {
final String readFile = fileName;
Thread thread = new Thread() {
public void run() {
try {
// open the file, wrapping it in a ProgressMonitorInputStream
StringBuffer contents = new StringBuffer();
InputStream in = new FileInputStream(readFile);
ProgressMonitorInputStream pm =
new ProgressMonitorInputStream(
frame,
"Reading the big file",
in);
int c = 0;
while ((c = pm.read()) != -1) {
contents.append((char) c);
}
pm.close();
String text = contents.toString();
editor.setText(text);
} catch (Exception ex) {
ex.printStackTrace();
}
}
};
thread.start();
}