Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52

    aggiornare il popolamento di una jList

    ciao ragazzi, ho un problema, vorrei riempire una jList, praticamente sto in un jFrame e dopo che premo un bottone vorrei che mi si aggiornasse/popolasse la jList di un altro jFrame, ho notoato che questa cosa mi riesce se mi chiamo il metodo nel costruttore ma io vorrei che la jList si riempisse alla pressione del bottone
    grazie in anicipo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da NicVeg Visualizza il messaggio
    ciao ragazzi, ho un problema, vorrei riempire una jList, praticamente sto in un jFrame e dopo che premo un bottone vorrei che mi si aggiornasse/popolasse la jList di un altro jFrame, ho notoato che questa cosa mi riesce se mi chiamo il metodo nel costruttore ma io vorrei che la jList si riempisse alla pressione del bottone
    Troppo generica e vaga come questione ... bisogna vedere come è la architettura e il design delle tue classi, cosa "sanno" una dell'altra, ecc...

    Ammesso di essere in una classe che estende JFrame e avendo a disposizione un reference es. frame2, la cosa buona e "pulita" che si può fare è fare in modo che la classe del secondo frame metta a disposizione un metodo pubblico es. aggiungi che permette di aggiungere un valore nella sua lista, mantenendo nascosti i dettagli della lista.
    Ovvero, evita di "esporre" la lista direttamente dal secondo frame o robe del genere.

    Ripeto comunque che tutto dipende dal "design" che hai realizzato ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52
    praticamente vorrei che premendo il tasto generaCC vorrei che i valori di elenco tabelle (prima immagine)

    1.jpg
    si riempissero nella jList Fact tabelle (seconda immagine)

    2.jpg
    praticamente ho un metodo che si chiama aggiornalista che fa mi riempie la tabella della prima immagine implementata cosi:
    codice:
     public static void aggiorna_lista() {
            
            jListTabelle.setModel(ComponentiEpad.listModel("tabella", null));
           
         }
    vorrei che facesse la stessa cosa nella seconda interfaccio, ho implementato lo stesso metodo anche nella seconda interfaccia ma non mi compare niente, mi compare solo se il metodo lo richiamo dal costruttore solo che cosi mi compare sempre mentre io voglio che mi compare alla pressione del bottone generaCC, non so se sono stato chiaro se serve qualche altro pezzo di codice per capire bene ti mando altro non so

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da NicVeg Visualizza il messaggio
    codice:
     public static void aggiorna_lista() {
            
            jListTabelle.setModel(ComponentiEpad.listModel("tabella", null));
           
         }
    Comunque è ancora vaga come questione, senza vedere il resto. Quello che è certo è che l'uso di static e anche la invocazione di listModel che presumo sia di nuovo static (lo invochi su una classe per quanto posso immaginare dal nome), non sono affatto un buon segno.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52
    si infatti faccio cosi nel tasto generaCC mi richiamo il metodo facendo nomeClasse.aggiorna_list(); è sbagliato non so come fare sto leggendo un sacco di forum ma non trovo niente, vuoi che mando qualche altra cosa

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Guarda .. purtroppo non saprei come aiutarti in questo momento, perché bisognerebbe vedere bene tutto il resto del codice dove comunque, molto probabilmente, c'è anche un problema di impostazione iniziale a livello architetturale.
    Cerca magari di "tamponare" il problema come puoi e riesci ma .... tieni presente in seguito che mettere metodi statici di qua e di là per passare dati come fa comodo ... non è la "buona" soluzione, detto in generale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52
    Non potresti indicarmi qualcosa, cosa cercare perche non so proprio come risolvere questo problema

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da NicVeg Visualizza il messaggio
    Non potresti indicarmi qualcosa, cosa cercare perche non so proprio come risolvere questo problema
    Queste cose si risolvono "a monte" ... ovvero avendo chiaro come effettuare il design giusto delle classi, come separare i concetti e nascondere bene i dettagli interni delle classi. Insomma, le solite basi della OOP.

    Comunque puoi provare a spiegare meglio, a parole, il tuo contesto: cosa fanno quelle due finestre, in che relazione sono (una delle due apre l'altra?), quali operazioni devono fare. Magari si può provare a ragionare su queste cose.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52
    siamo nel file EditorAdmin.java, in questo file ho 2 jList una ci sono le tabelle e nell'altra jList ci sono gli attributi della tabella che seleziono dalla prima jList poi ho una jTable, un bottone che si chiama generaCC e un bottone che si chiama elimina.
    quindi nella prima immagine che ho postato prima della prima jList vengono caricate le tabelle dal database attraverso il metodo aggiorna_lista che viene chiamato nel costruttore in modo tale da comparire ogni volta, quindi qualsiasi tabella c'è nel database viene caricato in quella jList, poi vabbe faccio altre funzioni perche faccio dei calcoli sulle tabelle, quando premo il tasto generaCC mi mette quello che clicco ovvero il campo della seconda jList in cui ci sono gli attributi della tabella della prima jList(come detto prima) in una jTable in questa jTable ha 2 colonne una si chiama tabella e una campo, quindi ripeto quando clicco una riga della seconda jList in cui ci sono gli attributi della tabella selezionata della prima jList clicco sul bottone generaCC viene riportata nella jTable la tabella e i relativi attributi.
    poi ho un tasto elimina in modo tale che se seleziono una riga della jTable mi elimina la riga sia dalla jTable che dal database e fin qui ok, ora voglio che le tabelle che vengono inserite nella jTable pero solo le tabelle ovvero la stessa jList (la prima dove stanno le tabelle) vengano inserite in un altra jList che si trova in un altra interfaccia di un altro file che si chiama EditorEpad.java, quindi premo il bottone chiudi che mi porta nel file EditorEpad.java e vorrei che stessero le stesse cose della prima jList ovvero le tabelle del database. e ultima cosa vorrei che selezionando la riga della jTable del file EditorAdmin.java e premendo elimina mi eliminasse non solo la riga dal database (che gia lo fa quindi ok ) ma mi cancellasse anche la tabella nella jList del file EditorEpad.java
    spero sia stato chiaro grazie della pazienza, ora posto i due file magari se ti va di dare un occhiata thanks.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52
    EditorAdmin

    codice:
    public class EditorAdmin extends javax.swing.JFrame
    {   
        public EditorAdmin() throws SQLException 
        {   
            setResizable(false);
            initComponents();
            ini();
            aggiorna_lista();
            aggiorna_tabella();
        }
        
        DefaultTableModel model = new DefaultTableModel(new Object[] { "Tabella", "Campo" }, 0)
    	{
                private static final long serialVersionUID = 1L;
                public boolean isCellEditable(int row, int column) 
                {   
                    //all cells false
                    return false;
                }
    	};
        
        ComponentiEpad sessione = new ComponentiEpad();  
        Generatore myGen = new Generatore();
        private String tabella;
    
       private void jButtonChiudiActionPerformed(java.awt.event.ActionEvent evt) {                                              
           
           EditorEpad.start(null);
           dispose();
        }                                             
    
    
        private void jListTabelleValueChanged(javax.swing.event.ListSelectionEvent evt) {                                          
               tabella = (String) jListTabelle.getSelectedValue(); //restituisce l'item selezionato
               jListCampi.setModel(ComponentiEpad.listModel("campi", tabella)); 
        }                                         
    
    
        private void jListCampiValueChanged(javax.swing.event.ListSelectionEvent evt) {
         
        }
        
        private void jButtonGeneraCCActionPerformed(java.awt.event.ActionEvent evt) {                                                
            String nome = "";
            int[] selectedIx = jListCampi.getSelectedIndices();
            Record campoSel[] = new Record[selectedIx.length];
            
            for (int i = 0; i < selectedIx.length; i++) 
            {
                campoSel[i] = new Record();
                campoSel[i].nome = (String) (jListCampi.getModel().getElementAt(selectedIx[i]));
                System.out.println("camposel = "+campoSel[i].nome);
                nome += campoSel[i].nome + "\n";
            }
        
        int n;
            n = JOptionPane.showConfirmDialog(
                    null,
                    "Sono stati selezionati i seguenti campi:\n" + nome + "Continuare?",
                    "Generazione CC",
                    JOptionPane.YES_NO_OPTION);
            
          if (n == JOptionPane.YES_OPTION)
          {
              double inizio = System.currentTimeMillis();
                try {
                    myGen.generaCC(sessione.getGrado(), tabella, campoSel);
                } catch (SQLException ex) {
                    Logger.getLogger(EditorAdmin.class.getName()).log(Level.SEVERE, null, ex);
                }
              double fine = System.currentTimeMillis();
              double durata = (fine - inizio) / 1000;
              System.out.println("durata: " +durata);
              JOptionPane.showMessageDialog(null,
                      "Calcolo concluso",
                      "Generazione CC",
                      JOptionPane.INFORMATION_MESSAGE);
          }
             
            for (int i = 0; i < selectedIx.length; i++) 
            {
                String[] tab = {tabella, campoSel[i].nome};
                model.addRow(tab);
                jTableCoefficienti.setModel(model);
            }
            
            EditorEpad.aggiorna_lista();
        }                                               
      
        
        private void jButtonEliminaActionPerformed(java.awt.event.ActionEvent evt) {                                               
    
    
               Object selection = jTableCoefficienti.getValueAt(jTableCoefficienti.getSelectedRow(), 0);
            
            int n;
            n = JOptionPane.showConfirmDialog(
                    null,
                    "Vuoi cancellare i CC calcolati sulla tabella " + selection + "?",
                    "Elimina",
                    JOptionPane.YES_NO_OPTION);   
            
            if (n == JOptionPane.YES_OPTION)
                {
                  myGen.eliminaCC((String) selection);
                }
            try {    
                aggiorna_tabella();
            } catch (SQLException ex) {
                Logger.getLogger(EditorAdmin.class.getName()).log(Level.SEVERE, null, ex);
            }
            
            //EditorEpad.aggiorna_lista();
        }                                              
        
        public static void start(String args[]) {
           
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        new EditorAdmin().setVisible(true);
                    } catch (SQLException ex) {
                        Logger.getLogger(EditorAdmin.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            });
        }
        
         private void ini() 
         {  
            jTableCoefficienti.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
            jTableCoefficienti.setAutoCreateRowSorter(true);
            jTableCoefficienti.setNextFocusableComponent(jTableCoefficienti);
            jTableCoefficienti.getTableHeader().setReorderingAllowed(false);
            jScrollPane3.setViewportView(jTableCoefficienti);
            
            jListTabelle.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            jListCampi.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
         }
         
         private void aggiorna_lista() {
             jListTabelle.setModel(ComponentiEpad.listModel("tabella", null));
         }
         
         private void aggiorna_tabella() throws SQLException {
             jTableCoefficienti.setModel( (TableModel) ComponentiEpad.tableModel("campo"));
         }

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 © 2026 vBulletin Solutions, Inc. All rights reserved.