Foros del Web » Programación para mayores de 30 ;) » Java »

problema SwingWorker

Estas en el tema de problema SwingWorker en el foro de Java en Foros del Web. bueno mi problema esque necesito crear appends a un textarea con swingworker, pero el valor de append es una variable y no logro entender como ...
  #1 (permalink)  
Antiguo 15/07/2009, 14:37
 
Fecha de Ingreso: enero-2008
Mensajes: 46
Antigüedad: 16 años, 3 meses
Puntos: 0
problema SwingWorker

bueno mi problema esque necesito crear appends a un textarea con swingworker, pero el valor de append es una variable y no logro entender como poder hacerlo si esa variable esta en otro metodo

de momento mi proyecto largo lo tengoseparado de uno pequeño para primero poder saber implementar el swingworker con el append
de todos modos dejo ambos por si alguien entiende lo que necesito y me pudiese orientar que las paginas y algunos codigos ingleses no me van muy bien

gracias

proyecto corto
Código:
package swingworker2;

import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingWorker;

public class Main{
    public static JTextArea textArea;
  public static void main(String[] args) {
    final JProgressBar progressBar = new JProgressBar(0, 10);

    final CounterTask task = new CounterTask();
    task.addPropertyChangeListener(new PropertyChangeListener() {
      public void propertyChange(PropertyChangeEvent evt) {
        if ("progress".equals(evt.getPropertyName())) {
          progressBar.setValue((Integer) evt.getNewValue());
        }
      }
    });
    JButton startButton = new JButton("Start");
    startButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        task.execute();
      }
    });

    JButton cancelButton = new JButton("Cancel");
    cancelButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        task.cancel(true);
      }
    });

    JPanel buttonPanel = new JPanel();
    buttonPanel.add(startButton);
    buttonPanel.add(cancelButton);

    JPanel cp = new JPanel();
    LayoutManager layout = new BoxLayout(cp, BoxLayout.Y_AXIS);
    cp.setLayout(layout);
    cp.add(buttonPanel);
    cp.add(progressBar);
     JTextArea textArea = new JTextArea(10, 10);
        JScrollPane scrollPane = new JScrollPane(textArea);
        cp.add(textArea);

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setContentPane(cp);
    frame.pack();
    frame.setVisible(true);
    
  }
}

 class CounterTask extends SwingWorker<Integer, Integer>, Main() {
  int DELAY = 1000;
  @Override
  protected Integer doInBackground() throws Exception {
    int i = 0;
    int count = 10;
    while (!isCancelled() && i < count) {
      i++;
      publish(new Integer[] { i });
      setProgress(count * i / count);
      String labela = textArea.getText();
          setText(labela + "0/n");
      
      Thread.sleep(DELAY);
    }
    return count;
  }
  protected void process(List<Integer> chunks) {
      System.out.println(chunks);

  }
  @Override
  protected void done() {
    if (isCancelled())
      System.out.println("Cancelled !");
    else
      System.out.println("Done !");
  }
}

proyecto completo

aqui mi idea es que el resultado de la variable line se muestre en un jtextarea pero de momento solo se ve al final, por esto es este lio del swingworker

http://s2d4.usaupload.net/upload.tu?...96ab1a00553e9c
lo dejo en una url debido a que eran demaciaods caracteres para el foro


una ves mas gracias por su ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:55.