Oppure

Loading
05/12/09 15:10
killer
...salve...ho bisogno urgentemente di aiuto...
Allora ho impostato il setEditing(true) nella jTable in modo tale da poter inserire delle informazioni manualmente...pero queste informazioni, le devo memorizzare automatikamente in un file...non saprei dunque quale evento utilizzare per fare questo discorso qui...
Ho una classe che implementa la Serializable nella quale ho dichiarato e istanziato degli attributi che andro a memorizzare..

public class x implements Serializable(){

String nome;
String cognome;

public x(){
nome="";
cognome="";
}
}


L'intestazione della mia jtable è impostata cosi di seguito:
1)nome colonna: Nome
2)nome altra colonna: Cognome
in ogni colonna ci sono le row (modificabili) in cui manualmente inserisco il corrispettivo valore.
nel momento in cui io clikko su invio, dovrebbe salvare tutte le informazioni in un file ..
non riesco a capire come fare..
potreste aiutarmi ?!!
aaa
05/12/09 15:26
netarrow
fondamentale è la lettura del tutorial di Sun sul componente:
java.sun.com/docs/books/tutorial/uiswing/components/…

In particolare il capitolo sull'aggiornamento dei dati:
java.sun.com/docs/books/tutorial/uiswing/components/…
aaa
05/12/09 16:14
killer
ciao...grazie dei link ma non ho ancora risolto il problema..non capisco come fare a salvare i dati in un file una volta che li ho memorizzato manualmente nella jTable ..tutto questo quando premo INVIO e finisco di modificare i dati all'interno..
Ultima modifica effettuata da killer 05/12/09 16:15
aaa
05/12/09 20:49
netarrow
si certo tu puoi modificare le celle anche senza gestirne l'evento, ma per fare il salvataggio dopo la modifica devi intercettare l'evento di modifica, e a quel punto dare il comando di salvataggio che dipende ovviamente da come vuoi salvare i dati.

prendendo il codice di Sun 2° link:

  public void tableChanged(TableModelEvent e) {
        int row = e.getFirstRow();
        int column = e.getColumn();
        TableModel model = (TableModel)e.getSource();
        String columnName = model.getColumnName(column);
        Object data = model.getValueAt(row, column);

       ...// Do something with the data... <---------------
        // Fai qualcosa coi dati (tra cui salvarli)
    }


Tu parli di classe serializzabile quindi per salvare:

ObjectOutput out = new ObjectOutputStream(new FileOutputStream("file.dat"));
out.writeObject(object); // object sarà l'oggetto da salvare
 out.close();


Poi naturalmente dipende da come hai impostato il tutto; potresti usare un Vector di Vector per mantenere l'intero stato dell'intera tabella e ad ogni modifica riportarla li e serializare tutto.
aaa
07/12/09 9:34
killer
salve..grazie pero non ho capito cosa fa quel source che mi hai postato..potresti spiegarmelo ?!!
aaa
07/12/09 13:57
netarrow
quel codice è il listener dell'evento di modifica di una tabelle, l'oggetto tableevent contiene le informazioni riguardo l'efento come ad esempio riga e colonna che rappresentano la cella modificata.
Una volta ottenuta la coordinata si ottiene un Object contenente il valore.

Il metodo del model invece ritorna semplicemente sotto forma di String l'intestazione della colonna.
aaa