Re: actualizar jTable

ramirex <[email protected]>
Newsgroups gmane.comp.java.javaspain
Message-ID <[email protected]>
No e tenido el tiempo para leer tu codigo, pero la idea es esta para
poder actualizar un jtable y un monton de otros componentes.

supongo que tienes creado un jscrollpane donde esta contenido tu jtable.

lo que tienes que hacer para que refresque es crear un metodo con un
new JTable() y todas las demas cosas que tienes que refrescar o
actualizar y al final de tu codigo vuelves a cargar tu tabla al scroll
y listo...

saludos..

PD. si quieres antes de poner un new JTable puedes hacer un
remove(tabla); para que de menos carrga a la memoria ram.

2008/4/8 juan lopez <jazpiroz2006-/[email protected]>:
>
>
>
>
>
>
> Hola yo devuelta, hace un tiempo pregunte por esto, y bueno desde entonces
> no encuentro la soluciòn a poder actualizar una tabla ya sea con un boton
> actualizar o automaticamente, navegar si he navegado y probado de todo
> estoy desesperado por esto,
> les pego el codigo y me cuentan como puedo lograr esto
> desde ya muchas gracias
>
> el tableModel:
>
> package grafica;
> import java.util.Vector;
> import javax.swing.table.AbstractTableModel;
> import logica.Clientes;
> import logica.Material;
> import logica.Proveedor;
> import javax.swing.table.*;
> import javax.swing.event.*;
> import java.util.*;
> public class TableModelProveedores extends AbstractTableModel{
>  private Vector vecPro;
>
>     private String []
> columnas={"Código","Nombre","Dirección","Teléfono","RUC","Contacto"};
>     // Constructor. Recibe los bov a mostrar en la tabla y las guarda
>     public TableModelProveedores(Vector cli)
>     {
>      vecPro = cli;
>     }
>
>     // métodos sobre-escritos heredados de AbstractTableModel
>
>     // cantidad de columnas
>     public int getColumnCount()
>     {
>       return columnas.length;
>     }
>
>     // cantidad de filas
>     public int getRowCount()
>     {
>       return vecPro.size();
>     }
>
>     // nombre de columna
>     public String getColumnName(int col)
>     {
>       return columnas[col];
>     }
>
>     // valor almacenado en una determinada posición de la tabla
>     public Object getValueAt(int fila,int col)
>     {
>        switch(col) {
>
>        case 0: return (((Proveedor) vecPro.get(fila)).getCodigo());
>        case 1: return ((Proveedor) vecPro.get(fila)).getNombre();
>        case 2: return ((Proveedor) vecPro.get(fila)).getDireccion();
>        case 3: return ((Proveedor) vecPro.get(fila)).getTelefono();
>
>        case 4: return ((Proveedor) vecPro.get(fila)).getRuc();
>        case 5: return ((Proveedor) vecPro.get(fila)).getContacto();
>
>
>
>        default: return null;
>
>        //TableModelEvent evento = new TableModelEvent (this,fila , fila);
>           // ... y pasándoselo a los suscriptores.
>           //avisaSuscriptores (evento);
>
>
>
>        }
>     }
>       public int getCodAt(int fila){
>        int codigo = ((Proveedor) vecPro.get(fila)).getCodigo();
>        return codigo;
>
>         //Avisa a los suscriptores del cambio, creando un TableModelEvent
> ...
>
>       }
>
>
>
>
>
>       /** Lista con los datos. Cada elemento de la lista es una instancia de
>        * Persona */
>
>
>       /** Lista de suscriptores. El JTable será un suscriptor de este modelo
> de
>        * datos */
>       private LinkedList listeners = new LinkedList();
>
>
>
>
>       public void addTableModelListener(TableModelListener l) {
>           // Añade el suscriptor a la lista de suscriptores
>           listeners.add (l);
>       }
>
>       public void removeTableModelListener(TableModelListener l) {
>           // Elimina los suscriptores.
>           listeners.remove(l);
>       }
>
>
>
>     // que las celdas no sean editables
>     public boolean isCellEditable(int fila,int col)
>     {
>         return false;
>     }
>
>     private void avisaSuscriptores (TableModelEvent evento)
>       {
>           int i;
>
>           // Bucle para todos los suscriptores en la lista, se llama al
> metodo
>           // tableChanged() de los mismos, pasándole el evento.
>           for (i=0; i<vecPro.size(); i++)
>               ((TableModelListener)listeners.get(i)).tableChanged(evento);
>       }
>
>     /**************** actualizar() ************************/
>       public Vector actualizar(Vector CC ) {
>
>        // Ejecutar la consulta
>     vecPro=CC;
>        fireTableStructureChanged();       // Ordena a la JTable que se
> actualice
>
>        return vecPro;
>
>       }
>
>
>
> }
>
>
> y la ventana donde genero la tabla:
>
> package grafica;
> import java.awt.BorderLayout;
> import java.awt.event.ActionEvent;
> import java.awt.event.ActionListener;
> import java.util.Iterator;
> import java.util.Vector;
> import javax.swing.ImageIcon;
> import javax.swing.JButton;
> import javax.swing.JFrame;
> import javax.swing.JOptionPane;
> import javax.swing.JPanel;
> import javax.swing.JScrollPane;
> import javax.swing.JTable;
> import javax.swing.ListSelectionModel;
> import javax.swing.WindowConstants;
> import javax.swing.event.ListSelectionEvent;
> import javax.swing.event.ListSelectionListener;
> import javax.swing.table.TableColumn;
> import persistencia.ConexionSingletonFirebird;
> import java.sql.Connection;
> import java.util.*;
> import net.sf.jasperreports.engine.JasperFillManager;
> import net.sf.jasperreports.engine.JasperPrint;
> import net.sf.jasperreports.view.JasperViewer;
>
> import logica.ColClientes;
> import logica.Clientes;
> import logica.Facade;
> import logica.Material;
> import logica.Proveedor;
>
> /**
> * This code was edited or generated using CloudGarden's Jigloo
> * SWT/Swing GUI Builder, which is free for non-commercial
> * use. If Jigloo is being used commercially (ie, by a corporation,
> * company or business for any purpose whatever) then you
> * should purchase a license for each developer using Jigloo.
> * Please visit www.cloudgarden.com for details.
> * Use of Jigloo implies acceptance of these licensing terms.
> * A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
> * THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
> * LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
> */
> public class VentanaListadoProveedores extends javax.swing.JFrame implements
> ListSelectionListener, ActionListener {
> private JPanel jPanel1;
> private JPanel lista;
>
> Vector vecBanco;
> private JButton jButtonActualiza;
> private JButton jButtonModifica;
> private JButton jButtonSalir;
> private JButton jButtonEliminar;
> private JButton jButtonAgregar;
> ListSelectionModel mod;
> JTable tabla;
> TableModelProveedores modelo;
> JButton boton;
> JFrame frame;
> Facade log;
>
>
>
> public int codigo;
>
>
> /**
> * Auto-generated main method to display this JFrame
> */
>
> public static void main(String[] args) {
> VentanaListadoProveedores inst = new VentanaListadoProveedores();
> inst.setVisible(true);
> }
>
>
> public VentanaListadoProveedores() {
> super();
> initGUI();
> }
>
> private void initGUI() {
> try {
> setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
> this.setLocation(new java.awt.Point(80, 70));
> this.setTitle("Listado de Proveedores");
> {
> jPanel1 = new JPanel();
> getContentPane().add(jPanel1, BorderLayout.CENTER);
> jPanel1.setLayout(null);
> jPanel1.setPreferredSize(new java.awt.Dimension(588, 308));
> {
> lista = new JPanel();
> jPanel1.add(lista);
> lista.setBounds(21, 7, 833, 406);
> lista.setLayout(null);
> }
> {
> jButtonAgregar = new JButton();
> jPanel1.add(jButtonAgregar);
> jButtonAgregar.addActionListener(this);
> jButtonAgregar.setText("Nuevo");
> jButtonAgregar.setBounds(28, 420, 105, 28);
> //jButtonAgregar.setIcon(new
> ImageIcon(getClass().getClassLoader().getResource("grafica/imagenes/bt_Nuevo.jpg")));
> }
> {
> jButtonEliminar = new JButton();
> jPanel1.add(jButtonEliminar);
> jButtonEliminar.addActionListener(this);
> jButtonEliminar.setText("Eliminar");
> jButtonEliminar.setBounds(273, 420, 112, 28);
> //jButtonEliminar.setIcon(new
> ImageIcon(getClass().getClassLoader().getResource("grafica/imagenes/bt_Eliminar.jpg")));
> }
> {
> jButtonSalir = new JButton();
> jPanel1.add(jButtonSalir);
> jButtonSalir.addActionListener(this);
> jButtonSalir.setText("Salir");
> jButtonSalir.setBounds(756, 420, 98, 28);
> //jButtonSalir.setIcon(new
> ImageIcon(getClass().getClassLoader().getResource("grafica/imagenes/btnSalir.jpg")));
> }
> {
> jButtonModifica = new JButton();
> jPanel1.add(jButtonModifica);
> jButtonModifica.addActionListener(this);
> jButtonModifica.setText("Modifica");
> jButtonModifica.setBounds(147, 420, 112, 28);
> //jButtonModifica.setIcon(new
> ImageIcon(getClass().getClassLoader().getResource("grafica/imagenes/bt_Editar.jpg")));
> }
> {
> jButtonActualiza = new JButton();
> jPanel1.add(jButtonActualiza);
> jButtonActualiza.setText("Actualiza Listado");
> jButtonActualiza.addActionListener(this);
> jButtonActualiza.setBounds(406, 420, 126, 28);
> }
> try{
>
> log = new Facade(0);
>
> Iterator itera = log.listarProv(0);
> vecBanco = new Vector();
> while(itera.hasNext()){
> Proveedor cli = (Proveedor)itera.next();
> vecBanco.addElement(cli);//el table model recibe un vector, no un iterator
> }
> }catch(Exception ex){
> JOptionPane.showMessageDialog(this,ex.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
> }
>
>
>
> modelo = new TableModelProveedores(vecBanco);
> tabla = new JTable(modelo);
> tabla.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
> mod = tabla.getSelectionModel();
> mod.addListSelectionListener(this);
> //parte grafica
> JScrollPane scrollPane = new JScrollPane(tabla);
> lista.add(scrollPane);
> scrollPane.setBounds(7, 7, 826, 385);
> setPreferredWidth();
>
>
>
> }
> pack();
> this.setSize(867, 493);
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> public void setPreferredWidth(){
> TableColumn columna = null;
> for(int i = 0; i<modelo.getColumnCount(); i++){
> columna = tabla.getColumnModel().getColumn(i);
> if(i==0){
> columna.setPreferredWidth(70);
> }if(i==1){
> columna.setPreferredWidth(140);
> }
> }
> }
>
>
>
> public void valueChanged(ListSelectionEvent e){
> if(e.getValueIsAdjusting())
> return;
> if( e.getSource() == tabla.getSelectionModel()){
> // obtener el data model
> TableModelProveedores model = (TableModelProveedores)tabla.getModel();
> // Determinar el selected item
> int row = tabla.getSelectedRow();
> codigo = model.getCodAt(row);
>
>
> }
> }
> public void actionPerformed(ActionEvent e) {
> if(e.getSource()== jButtonSalir){
> dispose();
> }
>
>
> if(e.getSource()== jButtonAgregar){
> IngresoProveedor ins = new IngresoProveedor();
> ins.setVisible(true);
> }
>
> if(e.getSource()== jButtonEliminar){
>
> //AvisoEliminaMaterial ins = new AvisoEliminaMaterial(codigo);
> //ins.setVisible(true);
>
>
> }
>
>
>
> if(e.getSource()== jButtonActualiza){
> try{
>
> log = new Facade(0);
>
> Iterator itera = log.listarMateriales(0);
>
> vecBanco = new Vector();
> while(itera.hasNext()){
> Material cli = (Material)itera.next();
> vecBanco.addElement(cli);//el table model recibe un vector, no un iterator
> }
> }catch(Exception ex){
> JOptionPane.showMessageDialog(this,ex.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
> }
>
>
>
> //modelo = new TableModelMateriales(vecBanco);
> tabla = new JTable(modelo);
> //tabla.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
> //mod = tabla.getSelectionModel();
> //mod.addListSelectionListener(this);
>
> //parte grafica
> JScrollPane scrollPane = new JScrollPane(tabla);
> lista.add(scrollPane);
> scrollPane.setBounds(7, 7, 826, 385);
>
>
>
> }
>
>
>
>
> if(e.getSource()==jButtonModifica ){
>
> //ModificaMaterial ins = new ModificaMaterial(codigo);
> //ins.setVisible(true);
> }
>
>
>
> }
>
> }
>
>
> desde ya muchas gracias
>
>
>
>  ________________________________
>
> Tarjeta de crédito Yahoo! de Banco Supervielle. Solicitá tu nueva Tarjeta de
> crédito. De tu PC directo a tu casa.
>  Visitá www.tuprimeratarjeta.com.ar 



-- 
--------------------------------------------------------
----------------------- ramirex ---------------------
 [powered by Linux]
---------------------------------------------------------
weblog:
 http://ajayu.memi.umss.edu.bo/ramirex/


GPG Key ID: F36F6F8C
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.