Ciao a tutti.
Sono riuscito a visualizzare in una JTable il contenuto di una tabella del mio db (mySQL). Ora vorrei capire come è possibile mantenerla sincronizzata o quantomeno come è possibile fare tutte le modifiche non appena clicco il pulsante OK.
Vi posto il codice che ho usato:
Vi posto anche la classe File.class:codice:package myPack; public class FileTable extends javax.swing.JDialog { /** A return status code - returned if Cancel button has been pressed */ public static final int RET_CANCEL = 0; /** A return status code - returned if OK button has been pressed */ public static final int RET_OK = 1; /** Creates new form FileTable */ public FileTable(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); } /** @return the return status of this dialog - one of RET_OK or RET_CANCEL */ public int getReturnStatus() { return returnStatus; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { bindingGroup = new org.jdesktop.beansbinding.BindingGroup(); sf_dataPUEntityManager = javax.persistence.Persistence.createEntityManagerFactory("sf_dataPU").createEntityManager(); fileQuery = sf_dataPUEntityManager.createQuery("SELECT f FROM File f"); fileList = fileQuery.getResultList(); okButton = new javax.swing.JButton(); cancelButton = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { closeDialog(evt); } }); okButton.setText("OK"); okButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { okButtonActionPerformed(evt); } }); cancelButton.setText("Cancel"); cancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelButtonActionPerformed(evt); } }); jTable1.setColumnSelectionAllowed(true); jTable1.getTableHeader().setReorderingAllowed(false); org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, fileList, jTable1); org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${linkFile}")); columnBinding.setColumnName("Link File"); columnBinding.setColumnClass(String.class); columnBinding.setEditable(false); columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${usato}")); columnBinding.setColumnName("Usato"); columnBinding.setColumnClass(Boolean.class); bindingGroup.addBinding(jTableBinding); jTableBinding.bind(); jScrollPane1.setViewportView(jTable1); jTable1.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION); jTable1.getColumnModel().getColumn(1).setMinWidth(10); jTable1.getColumnModel().getColumn(1).setCellEditor(null); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(250, Short.MAX_VALUE) .addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(cancelButton) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(15, Short.MAX_VALUE)) ); layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {cancelButton, okButton}); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 181, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 97, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(cancelButton) .addComponent(okButton)) .addContainerGap()) ); bindingGroup.bind(); pack(); }// </editor-fold> private void okButtonActionPerformed(java.awt.event.ActionEvent evt) { doClose(RET_OK); } private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) { doClose(RET_CANCEL); } /** Closes the dialog */ private void closeDialog(java.awt.event.WindowEvent evt) { doClose(RET_CANCEL); } private void doClose(int retStatus) { returnStatus = retStatus; setVisible(false); dispose(); } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { FileTable dialog = new FileTable(new javax.swing.JFrame(), true); dialog.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } }); dialog.setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton cancelButton; private java.util.List<myPack.File> fileList; private javax.persistence.Query fileQuery; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; private javax.swing.JButton okButton; private javax.persistence.EntityManager sf_dataPUEntityManager; private org.jdesktop.beansbinding.BindingGroup bindingGroup; // End of variables declaration private int returnStatus = RET_CANCEL; }
Se potreste essermi di aiuto ve ne sarei gratissimo!!!codice:package myPack; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.persistence.Transient; @Entity @Table(name = "file") @NamedQueries({@NamedQuery(name = "File.findById", query = "SELECT f FROM File f WHERE f.id = :id"), @NamedQuery(name = "File.findByLinkFile", query = "SELECT f FROM File f WHERE f.linkFile = :linkFile"), @NamedQuery(name = "File.findByNomeFile", query = "SELECT f FROM File f WHERE f.nomeFile = :nomeFile"), @NamedQuery(name = "File.findByUsato", query = "SELECT f FROM File f WHERE f.usato = :usato"), @NamedQuery(name = "File.findByPercorsoLocale", query = "SELECT f FROM File f WHERE f.percorsoLocale = :percorsoLocale"), @NamedQuery(name = "File.findByIdVersione", query = "SELECT f FROM File f WHERE f.idVersione = :idVersione")}) public class File implements Serializable { @Transient private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this); private static final long serialVersionUID = 1L; @Id @Column(name = "id", nullable = false) private Integer id; @Column(name = "link_file") private String linkFile; @Column(name = "nome_file") private String nomeFile; @Column(name = "usato") private Boolean usato; @Column(name = "percorso_locale") private String percorsoLocale; @Column(name = "id_versione", nullable = false) private int idVersione; public File() { } public File(Integer id) { this.id = id; } public File(Integer id, int idVersione) { this.id = id; this.idVersione = idVersione; } public Integer getId() { return id; } public void setId(Integer id) { Integer oldId = this.id; this.id = id; changeSupport.firePropertyChange("id", oldId, id); } public String getLinkFile() { return linkFile; } public void setLinkFile(String linkFile) { String oldLinkFile = this.linkFile; this.linkFile = linkFile; changeSupport.firePropertyChange("linkFile", oldLinkFile, linkFile); } public String getNomeFile() { return nomeFile; } public void setNomeFile(String nomeFile) { String oldNomeFile = this.nomeFile; this.nomeFile = nomeFile; changeSupport.firePropertyChange("nomeFile", oldNomeFile, nomeFile); } public Boolean getUsato() { return usato; } public void setUsato(Boolean usato) { Boolean oldUsato = this.usato; this.usato = usato; changeSupport.firePropertyChange("usato", oldUsato, usato); } public String getPercorsoLocale() { return percorsoLocale; } public void setPercorsoLocale(String percorsoLocale) { String oldPercorsoLocale = this.percorsoLocale; this.percorsoLocale = percorsoLocale; changeSupport.firePropertyChange("percorsoLocale", oldPercorsoLocale, percorsoLocale); } public int getIdVersione() { return idVersione; } public void setIdVersione(int idVersione) { int oldIdVersione = this.idVersione; this.idVersione = idVersione; changeSupport.firePropertyChange("idVersione", oldIdVersione, idVersione); } @Override public int hashCode() { int hash = 0; hash += (id != null ? id.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof File)) { return false; } File other = (File) object; if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { return false; } return true; } @Override public String toString() { return "it.polimi.swqtool.data.File[id=" + id + "]"; } public void addPropertyChangeListener(PropertyChangeListener listener) { changeSupport.addPropertyChangeListener(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { changeSupport.addPropertyChangeListener(listener); } }
Ciao.
Mainetz

Rispondi quotando