Home / Programmazione / Java / Passare dati da una JTable a un JFrame
Mattepuffo

Passare dati da una JTable a un JFrame

Passare dati da una JTable a un JFrame

Lo scenario è questo: abbiamo dei dati su un db che visualiziamo tramite JTable; quando vogliamo modificare un record lo selezioniamo e passiamo i valro a un JFrame che si occuperà di fare questo.

Come fare?

La cosa non è molto difficile.

Dopo aver aggiunto un JButton apposito dobbiamo creare un evento.

Io l'ho fatto fare a NetBeans (sono un pò pigro ).

 Questo è il contenuto del nostro evento:

private void btnModifyActionPerformed(java.awt.event.ActionEvent evt) {                                          
if (tableData.getRowCount() > 0 && tableData.getColumnCount() > 0) {
if (tableData.getSelectedRow() > 0) {
ArrayList<String> list = new ArrayList<String>();
int numCol = model.getColumnCount();
Object value = null;
for (int i = 0; i < numCol; i++) {
value = tableData.getValueAt(tableData.getSelectedRow(), i);
list.add(value.toString());
}
FormModifica form = new FormModifica(list);
form.setVisible(true);
} else {
JOptionPane.showMessageDialog(null, "Select a row first");
}
} else {
JOptionPane.showMessageDialog(null, "Do the connection first");
}

}

Prima ho fatto un controllo per vedere se la JTable è vuota.

Il secondo controllo riguarda se è stata selezionata una riga (sennò che dati gli passiamo?).

Se i controlli vanno a buon fine creiamo un ArrayList<String> per salvare i valori delle celle della riga selezionata.

Con numCol contiamo il numero di colonne (model è il DefaultTableModel impostato sulla JTable).

Nel ciclo salviamo tutti i valori della riga selezionata e li aggiungiamo all'ArrayList.

Poi richiamo il JFrame per la modifica (FormModifica).

Questo JFrame avrà un costruttore apposito per "accogliere" l'ArrayList:

public class FormModifica extends javax.swing.JFrame {

private DBManager dbman = DBManager.getInstance();
private String[] valori;
private String id;
private String name;
private String author;
private String editor;
private String price;
private String isbn;
private String note;

public FormModifica(ArrayList<String> list) {
valori = (String[]) list.toArray(new String[list.size()]);
id = valori[0];
name = valori[1];
author = valori[2];
editor = valori[3];
price = valori[4];
isbn = valori[5];
note = valori[6];
initComponents(); //netbeans
setLocationRelativeTo(null); //netbeans
}

........

Qui prendo i valori passati e li salvo in oggetti String con i quali andrò a riempire che i componenti che mi servono (JTeaxtField, ecc).