Originariamente inviato da Kneos
model.addRow(new Object[]{bnEvent.getText(), 1, "€ "+String.format ("%.2f", f)});
Stai usando DefaultTableModel? Certo, può anche andare bene e offre già di serie addRow/insertRow ecc...
Ma innanzitutto non ha un metodo per fornirti "la riga" ... nemmeno come Object[] o Vector<Object>. Questo è un suo limite. E comunque tratta tutto a livello di Object.
Se vuoi qualcosa a livello più alto .... scrivi un tuo table model.
Originariamente inviato da Kneos
E poi per il ritorno dei dati al jframe??
Rifacendo l'esempio di una dialog per i dati di una Persona, uno scenario di codice sarebbe (abbozzato):
codice:
public class PersonaEditDialog extends JDialog {
private boolean ok;
public PersonaEditDialog(Frame parent) {
super(parent, "Edit Persona", true); // modale "di serie", non pilotato dall'esterno
// ... init componenti, layout, ecc....
}
....
public Persona showDialog(Persona p) {
// se p != null, imposta i campi, altrimenti imposta blank sui campi
ok = false;
setVisible(true);
if (ok) {
// prendi i valori dei campi e costruisci un Persona
return nuovaPersona;
} else {
return null;
}
}
}
Nel setup della dialog, creerai un JButton "Ok" e registrerai un ActionListener. Se viene premuto ok, puoi validare l'input (opzionale, se hai dei vincoli), quindi ok=true; e infine dispose();
Se anche usi DefaultTableModel, nessuno ti vieta di avere una classe che rappresenta la tua entità (es. Persona), semplicemente prendi i dati dal model e popoli l'oggetto.
Ma invece di un "Persona", nessun ti vieta nemmeno di passare/ricevere dalla dialog un Object[] / Vector<Object>. È più brutto e poco pulito (io lo sconsiglierei) ma fattibile.