Componentes Swing e SwingWorker

1 resposta
lucasn

pessoal,

tenho uma aplicação que possui alguns componentes que precisam ser atualizados por um thread. Aqui vai o programa bem simplificado:

public class Main extends javax.swing.JFrame {

    private MontanhaRussa mr;

    public Main() {
        initComponents();
        mr = new MontanhaRussa(jTextArea, jLabel);
    }

    private void initComponents() {


        jTextArea = new javax.swing.JTextArea();
        addBt = new javax.swing.JButton();
        jLabel = new javax.swing.JLabel();

	//[...]
        
        pack();
    }

    private void addBtActionPerformed(java.awt.event.ActionEvent evt) {      
            mr.start();
        
    }

 
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Main().setVisible(true);
            }
        });
    }

    private javax.swing.JButton addBt;
    private javax.swing.JLabel  jLabel;
    private javax.swing.JTextArea jTextArea;
}

O problema é o seguinte:
Existe uma classe MontanhaRussa, que deve atualizar o jLabel e o jTextArea. Para isso, uso a classe SwingWorker para gerenciar o thread etc.. Mas como a classe MontanhaRussa está em OUTRO ARQUIVO, não há como modificar os componentes, apenas se passá-los pelo construtor. Aqui vai a classe MontanhaRussa (bem simplificado também):

import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.table.TableModel;
import javax.swing.JTable;
import javax.swing.JOptionPane;


public class MontanhaRussa extends SwingWorker {

    
    //swing
    private JTable             jTable;
    private JTextArea          jTextArea;
    private JLabel             jLabel; //cronometro


    public MontanhaRussa(JTable jTable, JTextArea jTextArea, JLabel jLabel)
    {
        pessoas = new LinkedList();

        this.jTable = jTable;
        this.jTextArea = jTextArea;
        this.jLabel = jLabel;

    }

    @Override
    public Object construct() {        
        //inicializando algumas threads modificadoras
        blabla.start();

        return new Object();
    }
}

eu gostaria de saber se há alguma outra maneira de fazer todo esse processo, pois a maneira que consegui fazer é meio orientado a gambiarra...

obrigado!

1 Resposta

mateusviccari

Me desculpem pelo UP colossal, mas eu estou com exatamente a mesma duvida do pinguim!
Alguem pra da uma luz?

Criado 8 de novembro de 2009
Ultima resposta 17 de nov. de 2011
Respostas 1
Participantes 2