[SOLUCIONADO]Cargar JTable con Timer

Iniciado por 1mpuls0, 12 Diciembre 2009, 17:30 PM

0 Miembros y 1 Visitante están viendo este tema.

1mpuls0

Hola, estoy haciendo una aplicacion en la que debo de cargar una tabla pero esta de debe mostrar como se van cargando cada fila, asi que lo estoy intentando hacer con timer, quiero que el proceso que me hace en el jtextarea me lo haga en mi jtable pero nada mas no  :¬¬, si alguien pudiera ayudarme se lo agradeceria.

Aqui el code


Código (java) [Seleccionar]

package tabla;

import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
//import javax.swing.table.DefaultTableModel;
import java.awt.FlowLayout;
import java.awt.Dimension;
import javax.swing.table.AbstractTableModel;
import java.awt.AWTEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import javax.swing.Timer;
import javax.swing.WindowConstants;
import javax.swing.JFrame;

public class cargarTabla extends JFrame {

  private JButton botCargar;
  private JTextArea areaTexto;
   private JScrollPane deslizadorAreaTexto;
   private JScrollPane deslizadorTablaCargada;
   private JPanel panel;
   private JTable tablaCargada;
   private ModeloTabla modeloTabla;
   
   public static void main(String args[]) {
       cargarTabla cT = new cargarTabla();
       cT.setLocationRelativeTo(null);
       cT.setVisible(true);
   }

   public cargarTabla() {
       iniciarInterfaz();
   }
   
   private void iniciarInterfaz() {

       botCargar = new JButton();
       panel = new JPanel();
       deslizadorTablaCargada = new JScrollPane();
       tablaCargada = new JTable();
       deslizadorAreaTexto = new JScrollPane();
       areaTexto = new JTextArea();

       setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
       setTitle("Carcar Tabla");
       setResizable(false);
       getContentPane().setLayout(new FlowLayout());

       panel.setPreferredSize(new Dimension(660, 370));
       panel.setLayout(null);

       modeloTabla=new ModeloTabla(new String[0],new Object[0][0]);
tablaCargada = new JTable(modeloTabla);
       deslizadorTablaCargada.setViewportView(tablaCargada);

       panel.add(deslizadorTablaCargada);
       deslizadorTablaCargada.setBounds(20, 50, 300, 300);

       areaTexto.setColumns(20);
       areaTexto.setEditable(false);
       areaTexto.setRows(5);
       deslizadorAreaTexto.setViewportView(areaTexto);

       panel.add(deslizadorAreaTexto);
       deslizadorAreaTexto.setBounds(340, 50, 300, 300);

       botCargar.setText("Cargar");
       botCargar.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent evt) {
               cargar();
           }
       });
       panel.add(botCargar);
       botCargar.setBounds(20, 10, 150, 20);

       getContentPane().add(panel);

       pack();
   }
   
   private void cargar(){
    String mensaje="";
    String [][] tablaCargada = tabla();
    TiempoDeEspera tiempo = new TiempoDeEspera();
   
    mensaje+="Cargando Tabla\n";
   
    for(int fila=0;fila<tablaCargada.length;fila++){
    mensaje+="\n";
    tiempo.establecer(1);
for(int columna=0;columna<tablaCargada[0].length;columna++){
mensaje+=tablaCargada[fila][columna]+" ";
areaTexto.setText(mensaje);
}
}
   
    modeloTabla.setNewTableData(new String[tablaCargada[0].length], tablaCargada);
   
   
   }
   
   private String[][] tabla(){
    String afnd[][]= {{"Estados","a","b","FDC"},
     {"q1","q2,q3","","-2"},
     {"q2","","q2,q4","-2"},
     {"q3","q3","q4","0"},
     {"q4","q4","","0"}};
return afnd;
   }

}

class ModeloTabla extends AbstractTableModel{
private static final long serialVersionUID = 1L;

private Object[][] data;
private String[] columnNames;

public ModeloTabla(String[] titles,Object[][] tabla){
columnNames=titles;
data=tabla;
}

public void setNewTableData(String[] titles,Object[][] tabla){
columnNames=titles;
data=tabla;
fireTableStructureChanged();
}

public String getColumnName(int columna) {
       return columnNames[columna];
   }

   public void setValueAt(Object value, int row, int col) {
      if(value==null)
      return;          
       data[row][col] = value;
       fireTableDataChanged();
   }

public int getColumnCount() {
return columnNames.length;
}

public int getRowCount() {
return data.length;
}

public Object getValueAt(int fila, int columna) {
return data[fila][columna];
}
}

class TiempoDeEspera extends JDialog{

private static final long serialVersionUID = 1L;
private Timer tiempo;

public void establecer(int segundos){
tiempo = new Timer(((segundos+1)*1000),new ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
tiempo.stop();
}
});
setUndecorated(true);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
setModal(true);
tiempo.start();
repaint();
validate();
setSize(1,1);
setVisible(true);
}
}


abc

Leyer

aqui lo tienes

Código (java) [Seleccionar]
import java.awt.AWTEvent;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.StringTokenizer;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.Timer;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;

public class cargarTabla extends JFrame {
private static final long serialVersionUID = 1L;

    private JButton     botCargar;
    private JTextArea   areaTexto;
    private JScrollPane deslizadorAreaTexto;
    private JScrollPane deslizadorTablaCargada;
    private JPanel      panel;
    private JTable      tablaCargada;
    private ModeloTabla modeloTabla;

    public static void main(String args[]) {
        cargarTabla cT = new cargarTabla();
        cT.setLocationRelativeTo(null);
        cT.setVisible(true);
    }
    public cargarTabla() {
        iniciarInterfaz();
    }

    private void iniciarInterfaz() {

        botCargar = new JButton();
        panel = new JPanel();
        deslizadorTablaCargada = new JScrollPane();
        tablaCargada = new JTable();
        deslizadorAreaTexto = new JScrollPane();
        areaTexto = new JTextArea();

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setTitle("Carcar Tabla");
        setResizable(false);
        getContentPane().setLayout(new FlowLayout());

        panel.setPreferredSize(new Dimension(660, 370));
        panel.setLayout(null);

        modeloTabla=new ModeloTabla(new String[0],new Object[0][0]);
tablaCargada = new JTable(modeloTabla);
        deslizadorTablaCargada.setViewportView(tablaCargada);

        panel.add(deslizadorTablaCargada);
        deslizadorTablaCargada.setBounds(20, 50, 300, 300);

        areaTexto.setColumns(20);
        areaTexto.setEditable(false);
        areaTexto.setRows(5);
        deslizadorAreaTexto.setViewportView(areaTexto);

        panel.add(deslizadorAreaTexto);
        deslizadorAreaTexto.setBounds(340, 50, 300, 300);

        botCargar.setText("Cargar");
        botCargar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                cargar();
            }
        });
        panel.add(botCargar);
        botCargar.setBounds(20, 10, 150, 20);

        getContentPane().add(panel);

        pack();
    }

    private void cargar(){
    String mensaje="";
    String [][] tablaCargada = tabla();
    TiempoDeEspera tiempo = new TiempoDeEspera();

    mensaje+="Cargando Tabla\n";

    for(int fila=0;fila<tablaCargada.length;fila++){
    mensaje+="\n";
    String temp = "";
    tiempo.establecer(1);
for(int columna=0;columna<tablaCargada[0].length;columna++){
mensaje+=tablaCargada[fila][columna]+" ";
temp+=tablaCargada[fila][columna]+",";
areaTexto.setText(mensaje);
}
StringTokenizer tokenizer = new StringTokenizer(temp,",");
modeloTabla.add(tokenizer.nextToken(),tokenizer.nextToken(),tokenizer.nextToken(),tokenizer.nextToken());
    }

    }
    private String[][] tabla(){
    String afnd[][]= {{"q1","q2,q3"," ","-2"},{"q2"," ","q2,q4","-2"},
                      {"q3","q3","q4","0"},{"q4","q4"," ","0"}};
return afnd;
    }
}
class ModeloTabla extends DefaultTableModel{
private static final long serialVersionUID = 1L;

private Object[][] data;

public ModeloTabla(String[] titles,Object[][] tabla){
addColumn("Estados");
addColumn("A");
addColumn("B");
addColumn("FDC");
data=tabla;
}
public void add(String nextToken, String nextToken2, String nextToken3,
String nextToken4) {
Object object[] = {nextToken,nextToken2,nextToken3,nextToken4};
super.addRow(object);

}
    public void setValueAt(Object value, int row, int col) {
        if(value==null)
        return;         
        data[row][col] = value;
        fireTableDataChanged();
    }
}
class TiempoDeEspera extends JDialog{

private static final long serialVersionUID = 1L;
private Timer tiempo;

public void establecer(int segundos){
tiempo = new Timer(((segundos+1)*1000),new ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
tiempo.stop();
}
});
setUndecorated(true);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
setModal(true);
tiempo.start();
repaint();
validate();
setSize(1,1);
setVisible(true);
}
}

1mpuls0

 :¬¬tsss que tonto soy, estaba usando  AbstractTableModel en vez de DefaultTableModel.
Gracias  ;D

Saludos

PD. Abra alguna forma de tener mas pequeña la clase TiempoDeEspera ?? o algo que haga lo mismo, es que siento que es mucho code para lo que hace.
abc