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

    Visualizzare elementi di una JList

    Ciao ,

    ho una JList ma sono giorni che provo , leggo , smanetto ma non riesco assolutamente a:
    Inserisco gli elementi nella lista (nel mio caso delle e-mail) ok poi chiudo il programma e scompare tutto .
    Qualcuno ha idea di come potrei memorizzare queste mail che io inserisco volta per volta in un magari Properties file o in un semplice file ?

    ho questo codice:
    codice:
    .........................................
    
    DefaultListModel a;
    
    .........................................
    
     a = new DefaultListModel();
            list.setModel(new DefaultListModel());
          
    ..........................................................
    
     if (evt.getSource() == jButton3) {
                    DefaultListModel a = (DefaultListModel) list.getModel();
                    a.addElement(_contattiJList.getText());
                    
                }
    Cosi popolo la JList , ma come posso collegare il tutto ad un file di Properties o File normale per poter salvare gli elementi magari ordinandoli e poi ad ogni apertura della GUI visualizzare gli elementi nella JList ?



    Ringraziamenti anticipati.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Visualizzare elementi di una JList

    Originariamente inviato da spiritoserio
    Qualcuno ha idea di come potrei memorizzare queste mail che io inserisco volta per volta in un magari Properties file o in un semplice file ?
    Le possibilità sono davvero molte per scrivere dei dati su un file. Innanzitutto file di testo o file binario. Poi ci possono essere svariati formati.
    Per file di testo: file di properties, file XML, file di testo con una "tua" struttura.
    Per file binari: serializzazione di Java o file con una "tua" struttura.

    Dovresti spiegare meglio quali/quanti dati e di che tipo devi poter salvare. Insomma ... la struttura dei tuoi dati.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ciao grazie per la risposta ,

    allora la struttura è molto semplice vorrei visualizzare nella JList una semplice e-mail

    ho una JTextField e un pulsante :

    JTEXTFIELD JBUTTON
    ---------------------------- --------------------------
    | email@email.com | | INSERISCI e-MAIL |
    ---------------------------- --------------------------

    Ecco come vedi molto semplice , però mi piacerebbe che alla pressione
    del JBUTTON la mail venga memorizzata magari un un file PROPERTIES
    la truttura del file di PROPERTIES ,per forza di cose da come ho letto dalla svariatissima documentazione deve essere (KEY/STRING) va bene allora faccio cosi:

    Contatto=email@email.com
    Contatto=ciao@ciao.com
    Contatto=buongiorno@buongiorno.com

    vedi? una cosa del genere mi piacerebbe se proprio non posso usare un PROPERTIES file va bene qualsiasi formato (anche se preferirei un PROPERTIES). Mi potresti fare qualche esempio con qualche pezzo di codice ? Te ne sarei molto grato visto che sono giorni che sclero a leggere documentazioni varie.

    Grazie 1000.

  4. #4
    Dimenticavo:

    Poi ad ogni apertura della GUI mi piacerebbe visualizzare nella JList la lista delle
    email senza la KEY(contatti) ma solo la mail esempio:

    JLIST
    --------------------------------------------------
    email@email.com |
    esempio@esempio.com |
    ciao@ciao.com |
    --------------------------------------------------

    grazie ancora.

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da spiritoserio
    però mi piacerebbe che alla pressione
    del JBUTTON la mail venga memorizzata magari un un file PROPERTIES
    Non ho ben capito: l'indirizzo vuoi prima aggiungerlo al JList? In tal caso non ti conviene scrivere ogni volta sul file (meglio farlo all'uscita del programma o su richiesta dell'utente es. pulsante SALVA o menù o altro).

    Originariamente inviato da spiritoserio
    la truttura del file di PROPERTIES ,per forza di cose da come ho letto dalla svariatissima documentazione deve essere (KEY/STRING) va bene allora faccio cosi:

    Contatto=email@email.com
    Contatto=ciao@ciao.com
    Contatto=buongiorno@buongiorno.com
    Non sei obbligato ad utilizzare un file di "properties" (nel tuo caso sopra sarebbe secondo me superfluo). Scrivi un banale file di testo in cui ogni riga contiene 1 indirizzo.

    Per gestire semplicemente file di testo ci sono svariate classi di I/O. Per scrivere puoi usare un PrintStream o PrintWriter o BufferedWriter. Per leggere conviene un BufferedReader. Se non ti è ben chiaro come funzionano e come si relazionano tra di loro le classi di I/O .... è chiaramente un problemino in più.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Grazie 1000 per la pronta risposta.



    Hai ragione :
    meglio salvare il tutto all'uscita nel programma non voglio inserire troppi pulsanti.



    si la gestione dell'IO è abbastanza semplice ma non so perchè volevo complicarmi la vita probabilmente lo farò con un semplce file txt .
    Sai mi hai aperto nuove strade non mi ero mai interessato alla serializzazione stò appunto leggendo un po' di documentazione ...ti farò sapere come risolverò intato ti ringrazio tantissimo!

    un saluto.

    Gaetano.

  7. #7
    Ciao ho risolto il problema cosi:

    codice:
      private void formWindowClosing(java.awt.event.WindowEvent evt) {
            ObjectOutputStream fout = null;    // file to write
          String item;
          try {
            fout = new ObjectOutputStream( new FileOutputStream("Contatti.data"));
            }
          catch(IOException ioe) {
            System.out.println("save Contatti.data not found");
            System.exit(0);
            }
            // write out the listModel, or, write the list....
            try {  fout.writeObject(list.getModel());   }
            catch(IOException ioe) {
              System.out.println("save IOExeception " + ioe);
              System.exit(0);
              }
          try { fout.close(); }
          catch(IOException ioe) {
            System.out.println("IOexception fout.close");
            System.exit(0); }
            System.out.println("Contatti.data Scritto con successo");
        }
    
        private void formWindowOpened(java.awt.event.WindowEvent evt) {
            ObjectInputStream fin = null;  // file to read
        // open file to read
        try {
          fin = new ObjectInputStream( new FileInputStream("Contatti.data"));
          }
        catch(IOException ioe) {
          System.out.println("load Contatti.data not found.");
          System.exit(0);
          }
        // read the listModel, or, the entire list
        try {
             DefaultListModel a =  (DefaultListModel) list.getModel();
          a = (DefaultListModel) fin.readObject();
          list.setModel(a);
          }
        catch (ClassNotFoundException cnf) {
          System.out.println("Item class not found, exit");
          System.exit(0);
          }
        catch (IOException ioe) {
          System.out.println("Error reading items");
          System.exit(0);
          }
        try { fin.close(); }
        catch(IOException ioe) {
          System.out.println("IOexception fout.close");
          System.exit(0); }
        System.out.println("list data read");
        }
    Funziona alla grande.

    GRAZIEEEEEEEEEEEEEEEEEEEEE!!

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da spiritoserio
    Funziona alla grande.
    Il "design" invece proprio no!! Almeno fai dei metodi separati (o magari anche una classe separata) per gestire la lettura/scrittura dei dati. È tutto pasticciato e mescolato tra gestione dell'evento e I/O. Ricordati che una cosa che funziona non vuol certo dire che è ben fatta/scritta!!!

    E se vogliamo fare i pignoli, stai addirittura serializzando tutto l'intero model!!! Che nel tuo caso è un DefaultListModel, basato su un Vector di oggetti. Insomma ... non stai serializzando solo i dati .... ma un po' di più.

    E la gestione delle eccezioni .... vedo troppi try/catch .... non è "pulita".

    Non gioire solo perché "funziona" ......
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Ma uso netbeans ed ho creato semplicemente degli eventi di chiusura d apertura .

    siccome sono alle prime armi non sò seguire il complesso consiglio che mi hai dato che sicuramente sarà più funzionale .
    se mi dai qualche dritta potrei provare.

    ciao

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da spiritoserio
    se mi dai qualche dritta potrei provare.
    Per fare la cosa un pochino più "pulita" potresti fare come minimo un metodo separato.

    Esempio:
    codice:
    private void salvaDati(ListModel listModel) throws IOException {
        FileOutputStream fos = new FileOutputStream("Contatti.data");
        ObjectOutputStream oos = null;
        
        try {
            oos = new ObjectOutputStream(fos);
            oos.writeObject(listModel);
        } finally {
            if (oos != null) {
                oos.close();
            } else {
                fos.close();
            }
        }
    }
    e poi ad esempio:

    codice:
    private void formWindowClosing(java.awt.event.WindowEvent evt) {
        try {
            salvaDati(list.getModel());
        } catch (IOException e) {
            JOptionPane.showMessageDialog(this, "Errore di I/O nel salvataggio dati",
                                          "ERRORE", JOptionPane.ERROR_MESSAGE);
        }
    }
    Più pulito, no?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.