Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Applicativo Java con jTable e righe selezionabili (Db MySql)

    Ciao a tutti, sono nuovo del forum.
    Ho il seguente problema:
    devo creare un applicazione java usando NetBeans. Questa applicazione si apre con una jTable che contiene di dati di un Db MySql. Tramite NetBeans lo collego alla jTAble e tutto funziona. VEngono visualizzati i dati. Dati di una ipotetica videoteca con tutti i film (Titolo, anno, regista ecc..).
    Al fondo ho un bottone che porta a una finestra che da la possibilità di inserire un nuovo film. E anche questa cosa funziona. Da li posso tornare alla lista dei film con un altro bottone. Il mio problema è che dalla jTAble dovrei poter selezionare una riga e accedere a una scheda del film.. con i suoi dati e un'immagine della locandina. I vari dati dovrebbero comparire ognuno in un textfield e poi dovrei avere la possibilità di modificare un dato inviando così al Db la correzione. Per finire dove ho la jTable un paio di filtri.
    Come dire alla riga selezionata quale Id gli appartiene e comunicarlo alla nuova finestra per aprire la scheda dedicata? Insomma ecco il mio problema, spero ci sia qualcuno che possa darmi una mano. Ripeto che uso Netbeans e cerco di scrivere meno codice possibile facendo fare tutto all'IDE.
    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    bhè, il problema risiede proprio nel fatto che tu abbia delegato l'IDE a fare tutto.

    Come carichi i video dal database (SELECT * FROM tua_tabella ?) ?
    Hai creato un oggetto "Film" o "Scheda", che corrisponda alle colonne nella tua tabella di riferimento? Dovresti essere in grado di recuperare anche l'id del film/scheda in quel modo.

    Creati un'altra dialog a cui passi la scheda del film (comprensiva di id), alla chiusura della quale aggiorni il database (se ce ne dovesse essere il bisogno) e ricarichi la jtable.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Con Netbeans creo la jtable e poi carico automaticamente i dati dal db con una funzione tutta sua.. non faccio query. non devo inserire codice per gestire questa cosa. La jtable visualizza automaticamente i dati.

    Nel DB vi è una sola tabella con: Id - Titolo - Anno - Regista - Genere - Durata

    Io voglio selezionare una riga, cliccare il bottone e andare su un jFrame che mi visualizza la scheda.. che prenda in pratica l'id della riga che ho selezionato per poi visualizzarmi Titolo - Anno - Regista - Genere - Durata e un'immagine.

    Non so come si fa, soprattutto usando quasi solo l'IDE.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    usando solo l'IDE non lo so nemmeno io. Non ho motivi per usare un IDE oltre che per la semplicità ad organizzare i progetti e per l'highlighting del codice. Il tuo caso è la prova provata che il resto delle funzioni offerte sono disfunzioni (in quanto, come vedi, poi non si riesce a fare quel che si vuole).
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    va be facciamo finta che non ho parlato di netbeans... come si fa?

  6. #6
    te lo ha già detto Andrea
    caricati anche l'id, così puoi richiamarti il film e puoi farequel che vuoi quel record
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  7. #7
    nel mio caso in una JTable avevo le partite di una giornata calcistica...
    Mi sono salvato in un Hashtable tanti oggetti Match e il suo ID cosi potevo subito capire a quale corrispondeva....
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    entro un po' nel dettaglio, ma visto che codice non ce n'è e che non si tratta di una richiesta trattabile sul forum (insomma, qui si vuole del codice pronto a partire da zero, non di visionare codice non funzionante / non performante - e quindi apparterrebbe alla sezione "Collaborazione / Lavoro - Cerco / Offro") ti indirizzo solo verso una delle possibili soluzioni (ovvero come mi muoverei io).

    - visto che vogliamo l'edit delle info in finestra separata, eliminerei la possibilità di editare le celle della JTable in-place (override di isCellEditable)

    - registrerei sulla JTable un MouseListener e ascolterei il doppio-click (anche qui, ti serve solo l'event mouseClicked, quindi MouseAdapter in cui fai l'override di mouseClicked)

    - in mouseClicked recuperi la riga clckata, quindi il record della tabella e apri una JDialog (magari modale, così blocchi la visualizzazione della JTable sottostante). Puoi già scrivere (anche con il composer di Netbeans - che personalmente odio) il codice necessario alla creazione di tale Dialog. Ovviamente conterrà tutti i campi necessari (l'id del record non credo ti serva, quindi puoi omettere di visualizzarlo, o quanto meno mettilo in un campo non editabile).

    - la JDialog di cui sopra avrà un JButton che si occuperà di salvare a database i dati aggiornati e chiudere la JDialog stessa, in modo che si possa tornare alla tabella.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    codice:
    package videoteca4;
    import java.awt.event.MouseEvent;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import javax.swing.table.TableModel;
    import java.sql.*; 
    import java.util.ArrayList;
    import javax.swing.JOptionPane;
    import javax.swing.JTable;
    
    public class Lista extends javax.swing.JFrame {
        
           public Lista() {
            initComponents();
        }
        
            @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
            bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
    
            videotecaPUEntityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory("videotecaPU").createEntityManager();
            elencoQuery = java.beans.Beans.isDesignTime() ? null : videotecaPUEntityManager.createQuery("SELECT e FROM Elenco e");
            elencoList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : elencoQuery.getResultList();
            jToggleButton1 = new javax.swing.JToggleButton();
            jButton1 = new javax.swing.JButton();
            jScrollPane1 = new javax.swing.JScrollPane();
            jTable1 = new javax.swing.JTable();
            jToggleButton2 = new javax.swing.JToggleButton();
            jSeparator1 = new javax.swing.JSeparator();
            jToggleButton3 = new javax.swing.JToggleButton();
            jLabel1 = new javax.swing.JLabel();
            jToggleButton4 = new javax.swing.JToggleButton();
    
            jToggleButton1.setText("jToggleButton1");
    
            jButton1.setText("jButton1");
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            setTitle("Videoteca");
            setBounds(new java.awt.Rectangle(100, 0, 0, 0));
            setPreferredSize(new java.awt.Dimension(800, 600));
            setResizable(false);
    
            jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS);
    
            org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, elencoList, jTable1, "");
            org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
            columnBinding.setColumnName("Id");
            columnBinding.setColumnClass(Integer.class);
            columnBinding.setEditable(false);
            columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${titolo}"));
            columnBinding.setColumnName("Titolo");
            columnBinding.setColumnClass(String.class);
            columnBinding.setEditable(false);
            columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${anno}"));
            columnBinding.setColumnName("Anno");
            columnBinding.setColumnClass(Integer.class);
            columnBinding.setEditable(false);
            columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${regista}"));
            columnBinding.setColumnName("Regista");
            columnBinding.setColumnClass(String.class);
            columnBinding.setEditable(false);
            columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${genere}"));
            columnBinding.setColumnName("Genere");
            columnBinding.setColumnClass(String.class);
            columnBinding.setEditable(false);
            columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${durata}"));
            columnBinding.setColumnName("Durata");
            columnBinding.setColumnClass(Integer.class);
            columnBinding.setEditable(false);
            bindingGroup.addBinding(jTableBinding);
            jTableBinding.bind();
            jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    jTable1MouseClicked(evt);
                }
            });
            jScrollPane1.setViewportView(jTable1);
    
            jToggleButton2.setText("inserisci un film");
            jToggleButton2.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jToggleButton2ActionPerformed(evt);
                }
            });
    
            jToggleButton3.setText("esci");
            jToggleButton3.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jToggleButton3ActionPerformed(evt);
                }
            });
    
            jLabel1.setFont(new java.awt.Font("Segoe UI", 1, 18)); // NOI18N
            jLabel1.setText("Videoteca - elenco film");
    
            jToggleButton4.setText("modifica");
            jToggleButton4.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jToggleButton4ActionPerformed(evt);
                }
            });
    
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPane1)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGap(20, 20, 20)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(layout.createSequentialGroup()
                                    .addComponent(jToggleButton2)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(jToggleButton3))
                                .addComponent(jSeparator1)))
                        .addGroup(layout.createSequentialGroup()
                            .addContainerGap()
                            .addComponent(jLabel1)))
                    .addGap(18, 18, 18))
                .addGroup(layout.createSequentialGroup()
                    .addGap(36, 36, 36)
                    .addComponent(jToggleButton4)
                    .addContainerGap())
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jLabel1)
                    .addGap(29, 29, 29)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE)
                    .addGap(18, 18, 18)
                    .addComponent(jToggleButton4)
                    .addGap(12, 12, 12)
                    .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(18, 18, 18)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jToggleButton2)
                        .addComponent(jToggleButton3))
                    .addGap(24, 24, 24))
            );
    
            bindingGroup.bind();
    
            pack();
        }// </editor-fold>                        
    
        private void jToggleButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                               
            Insert insert = new Insert();
            insert.setVisible(true);
            this.setVisible(false); 
        }                                              
    
        private void jToggleButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                               
                   System.exit(1);
        }                                              
    
        private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                     
          
          int selectedRow = jTable1.getSelectedRow();
            
            try {
                Connection connection;
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/videoteca", "Admin", "admin");
                String sql = "Select * from elenco where Id="+selectedRow;
                PreparedStatement stmt = connection.prepareStatement(sql);            
                stmt.executeQuery();
    
            } catch (Exception e) {
                System.err.println(e);
                System.exit(1);}        
            
                Dettaglio dettaglio = new Dettaglio(selectedRow);                  
                dettaglio.setVisible(true);        
                this.setVisible(false);
            
        }                                    
    
    
                                                    
        
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            /*
             * Set the Nimbus look and feel
             */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /*
             * If Nimbus (introduced in Java SE 6) is not available, stay with the
             * default look and feel. For details see
             * http://download.oracle.com/javase/tu...feel/plaf.html
             */
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(Lista.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(Lista.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(Lista.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(Lista.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            //</editor-fold>
    
            /*
             * Create and display the form
             */
            java.awt.EventQueue.invokeLater(new Runnable() {
    
                public void run() {
                    new Lista().setVisible(true);
                }
            });
        }
        // Variables declaration - do not modify                     
        private java.util.List<videoteca4.Elenco> elencoList;
        private javax.persistence.Query elencoQuery;
        private javax.swing.JButton jButton1;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JSeparator jSeparator1;
        private javax.swing.JTable jTable1;
        private javax.swing.JToggleButton jToggleButton1;
        private javax.swing.JToggleButton jToggleButton2;
        private javax.swing.JToggleButton jToggleButton3;
        private javax.swing.JToggleButton jToggleButton4;
        private javax.persistence.EntityManager videotecaPUEntityManager;
        private org.jdesktop.beansbinding.BindingGroup bindingGroup;
        // End of variables declaration                   
    }

  10. #10
    ecco il codice...

    ovviamente non ho messo editabili i campi dalla jtable.

    ho gia messo un evento sul doppio click su una riga

    se ho fatto correttamente, recuperata la riga non so come passarla all'altro jframe... e popolare i campi relativi ai dati di quella riga.

    non è per un lavoro questo applicativo.. è una prova che sto facendo a uno stage dove mi hanno dato da fare questa roba e sto provando cercando di documentarmi in giro.. insomma tutto da solo

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.