Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [java] JTable refresh

  1. #1

    [java] JTable refresh

    ciao a tutti

    ho creato una JTable così:

    codice:
    JTable table = new JTable(data, columnNames);
    dove data è una matrice di oggetti e columnNames è un array di stringhe.

    La domanda è : come si fa a aggiornare la tabella quando la matrice data viene modificata??

    cioè esiste un metodo del tipo

    ???? table.refresh(data) ????

  2. #2
    Penso di no ..
    Dovresti ricaricare la JTable .
    Non ne sono sicuro .. come ho un pò di tempo controllo
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    Prova ad aggiornare i 'Model' interni all'oggetto JTable:

    setColumnModel(TableColumnModel): usa questo metodo per aggiornare il modello delle colonne(intestazione, larghezza, ecc.);
    setTableModel(TableModel): con questo metodo aggiorniamo i 'dati' veri e propri da visualizzare nella tabella.

    Dai uno sguardo alle API comunque.

    Ciao e buon lavoro.

    P.S.: Ciao Zero-2
    Slack? Smack!

  4. #4
    Allora puoi provare a fare così
    codice:
    public void aggiorna(Vector dati,Vector colonne){
    DefaultTableModel dfm=new DefaultTableModel 
    (Vector dati,Vector colonne);
    
    table.setModel(dfm);
    
    }
    Si dovrebbe aggiornare, altrimenti
    aggiungi anche :

    table.updateUI();


    P.S. Ciao
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  5. #5
    Si dovrebbe aggiornare, altrimenti
    aggiungi anche :

    table.updateUI();
    Chiamare updateUI() non va bene. Vai a toccare la parte che gesitsce la visualizzazione della tabella. E' un workaround sporco.
    Piuttosto:

    codice:
    DefaultTableModel model = (DefaultTableModel)table.getModel();
    model.fireTableDataChanged();
    Bye.

  6. #6
    code:
    DefaultTableModel model = (DefaultTableModel)table.getModel();
    model.fireTableDataChanged();
    In questo modo non c'è bisogno di reinserire i dati nella tabella??
    Li riaggiorna da sola??
    Bello non lo sapevo
    Non si finisce mai di imparare

    :metallica :metallica
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  7. #7
    Hmm...ho letto male cosa vuol fare nicrom. Mi spiace ma per il suo caso non c'è nulla di fattibile. Leggendo la documentazione di DefaultTableModel risulta che la matrice (Object[][]) viene usata per creare dei vettori, quindi tutte le modifiche fatte in seguito alla stessa non si riflettono nel modello.

    Scusate

  8. #8
    codice:
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.*;
    
    public class Test2 extends JFrame {
    	
    private Vector data,titolo;
    private JTable x;
    public Test2 (){
    	data=new Vector();
    	titolo=new Vector();
    	for(int i=0;i<4;i++){
    		titolo.add("Col "+i);
    		Vector row=new Vector();
    		for(int j=0;j<4;j++){
    			row.add("Column "+j);
    			}
    		data.add(row);
    	}
    	x=new JTable(data,titolo);
    	this.getContentPane().add(new JScrollPane(x));
    	JButton c=new JButton("Premi qui");
    	getContentPane().add(c,"South");
    	c.addActionListener(new ActionListener(){
    		public void actionPerformed(ActionEvent e) {
    			((Vector)data.get(0)).setElementAt("Prova",1);
    			DefaultTableModel fm=new DefaultTableModel(data,titolo);
    			x.setModel(fm);
    		}	
    		});
    }
    	public static void main(String[] args) {
    		JFrame tmp=new Test2();
    		tmp.show();
    	}
    	
    }
    Penso che questo esempio faccia al caso tuo

    Prova e dimmi se ho centrato il problema
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  9. #9
    grazie a tutti per i suggerimenti,

    mi ci vorrà un pò di tempo per esaminarli
    tutti attentamente...

    grazie ancora.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.