
Problema a la hora de actualizar un JTextArea
Publicado por Kebo (15 intervenciones) el 11/04/2016 12:54:55
Buenos Dias.
Mi problema es que estoy desarrollando una ventana que ejecuta varias clases dependiendo de unos checkbox. Cuando ejecute la primera tarea (es decir, lo que diga en el primer checkbox) quiero que me diga que esta ejecutando esa tarea en el TextArea y cuanda acaba quiero que me diga que ha finalizado, pero hasta el momento en el que acaba de ejecutarse esa tarea el textarea no se actualiza. He leido algo por ahi sobre que puede ser problema del EDT (Event Dispatch Thread). Pero no entiendo muy bien... Aqui les dejo un trozo del código y a ver si pueden ayudarme.
Muchas gracias.
El código:
Mi problema es que estoy desarrollando una ventana que ejecuta varias clases dependiendo de unos checkbox. Cuando ejecute la primera tarea (es decir, lo que diga en el primer checkbox) quiero que me diga que esta ejecutando esa tarea en el TextArea y cuanda acaba quiero que me diga que ha finalizado, pero hasta el momento en el que acaba de ejecutarse esa tarea el textarea no se actualiza. He leido algo por ahi sobre que puede ser problema del EDT (Event Dispatch Thread). Pero no entiendo muy bien... Aqui les dejo un trozo del código y a ver si pueden ayudarme.
Muchas gracias.
El código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
public class TareasMantenimiento extends JFrame implements ActionListener {
private JCheckBox checkLogs, checkscripts;
private JTextArea consolatext;
private static String[] argumentos;
private boolean terminado = false;
private JButton botejecutar, botcancelar;
// Configuracion de GUI
public TareasMantenimiento() {
super("Tareas de Mantenimiento");
// Panel principal
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(4, 1));
checkLogs = new JCheckBox("Descarga logs");
checkscripts = new JCheckBox("Scripts SQL Diarios");
consolatext = new JTextArea();
JPanel panelbotones = new JPanel();
panelbotones.setLayout(new FlowLayout());
botejecutar = new JButton("Ejecutar");
botcancelar = new JButton("Cancelar");
panelbotones.add(botejecutar);
panelbotones.add(botcancelar);
// registrar componentes de escucha para los objetos JButton
botejecutar.addActionListener(this);
botcancelar.addActionListener(this);
panel.add(checkLogs);
panel.add(checkscripts);
panel.add(consolatext);
panel.add(panelbotones);
add(panel);
InicializarJframe();
}
// Control de eventos de los JButton dependiendo de los check que esten
// seleccionados
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(botejecutar)) {
// Si al pulsar el boton aceptar, este check esta marcado ejecuta la
// clase DescargaLogs
if (checkLogs.isSelected()) {
consolatext.append("--- Descarga logs --> En ejecución ---");
DescargaLogs deslog = new DescargaLogs(argumentos);
terminado = deslog.ejecutar();
if (terminado) {
consolatext.append("--- Descarga logs --> Terminado ---");
}
}
if (checkscripts.isSelected()) {
System.out.println("Scripts está seleccionado");
}
} else
System.exit(0);
}
private void InicializarJframe() {
setSize(600, 400);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
argumentos = args;
TareasMantenimiento tm = new TareasMantenimiento();
}
}
Valora esta pregunta


0