Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Vettori e JList

    Ciao , ho un problemino con la gestione di alcuni vettore, allora :
    Ho un 1° vettore di oggetti che si chiamano Configurazione ;
    Questi oggetti sono formati da variabili String, nome, cognome, indirizzo;
    Ho un pannello con una JList che prende in ingresso un 2°vettore di stringhe costruito da un ciclo che aggiunge al vettore il contenuto della varibile nome del 1° vettore.
    Quindi ad ogni selezione della JList visualizzo il contenuto del 1° vettore. e questo funziona...
    Io ora ho bisogno di riuscire in base alla selezione della lista ad eliminare il contenuto di quella posizione nel vettore...
    posto un po di codice....

    ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
    vettore = (Vector) in.readObject();
    int currentSelection = gestPanel.getIndice();//restituisce il valore di getSelectedindex() della Jlist
    vettore.removeElementAt(currentSelection);

    Il codice vettore.removeElementAt(currentSelection) non va...
    Spero di essere stato chiaro....

    Qualcuno può aiutarmi?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Cosa vuol dire "il codice removeElementAt() non va"?
    Ti restituisce qualche errore? Se sì postalo, così cerchiamo di capire.

    Se quello che intendi fare tu è di rimuovere dal file l'elemento selezionato, allora la cosa è di natura diversa: per modificare un file, bisogna riscriverlo da zero!


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Grazie per la risposta.
    Vuol dire che non succede niente,nessun'errore.
    forse è meglio spiegare meglio cosa fa il programma;
    ho nel pannello un oggetto JList , sulla destra della jlist ci sono delle JTextField, ad ogni selezione della jlist vengono settati nelle textfield le Stringhe del nome, cognome ed indirizzo, sotto ho un pulsante elimina, che dovrebbe eliminarmi in base alla selezione della jlist il relativo oggetto contenuto nella posizione del vettore
    Il cldice che ho provato non funziona ...

    dovrei estrarre il vettore dal file, confrontare il campo nome di ogni elemento del vettore con l'indice selezionato nella jlist e a quel punto eliminarlo ...

    ...dovrebbe essere così ...credo.... però non mi và ...

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Prova a postare un po' più di codice.
    Se intendi eliminare dal vettore l'elemento selezionato allora il codice (ovvero l'utilizzo del metodo removeElementAt() ) dovrebbe funzionare (a meno di errori nel calcolo dell'indice dell'elemento).

    Se intendi dire che la modifica non viene riportata a video, è un altro discorso: quello è un problema di refresh dei dati, perchè bisogna aggiornare la JList e ricostruire a video il tutto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Ok ti ringrazio ancora per la diponibilità, sono tutta la mattina cha sfioro (o almeno credo) la soluzione ma non ci riesco a trovarla...

    allora questa è la classe ConfigurazioneUtente

    public class ConfigurazioneUtente implements Serializable{
    private String nome;
    private String cognome ;
    private String mail;

    public ConfigurazioneUtente(){}

    public ConfigurazioneUtente(String n, String c, String m,) {
    n = nome;
    c = cognome;
    m = password;

    }

    public static final long serialVersionUID = 6373855689301856761L;

    public void setNome(String nome){
    this.nome = nome;
    }
    public String getNome(){
    return nome;
    }
    public void setCognome(String cognome){
    this.cognome = cognome;
    }
    public String getCognome(String cognome){
    return cognome;
    }

    public void setMail(String mail){
    this.mail = mail;
    }
    public String getMail(){
    return mail;
    }
    }
    Con un altra classe ho creato degli questi oggetti e salvati in un vector

    Poi c'è la class AccountPanel dove è contenuta la jlist creata in questo modo

    JList listAccount = new JList(getModelList());

    di seguito è riportato il codice di getModelList

    public Vector getModelList() {
    model = new Vector<String>();
    try{
    file = new File("mail\\account.dat");
    ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
    vettore = (Vector) in.readObject();
    for(int i = 0; i < vettore.size(); i++){
    ConfigurazioneUtente conf = (ConfigurazioneUente) vettore.get(i);
    model.addElement(conf.getNome());
    }
    }
    catch(IOException e){
    JOptionPane.showMessageDialog(null,e.getMessage()) ;
    }
    catch(ClassNotFoundException e){
    JOptionPane.showMessageDialog(null,e.getMessage()) ;
    }
    return model;
    }

    col metodo listAccountValueChanged(ListSelectionEvent evt) ad ogni selezione della JList carico in un form i dati del vettore :

    private void listAccountValueChanged(javax.swing.event.ListSele ctionEvent evt) {
    try{
    file = new File("mail\\account.dat");
    ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
    vettore = (Vector) in.readObject();
    String indice = (String) listAccount.getSelectedValue();
    for(int i = 0; i < vettore.size(); i++){
    ConfigurazioneUtente conf = (ConfigurazioneUtente) vettore.get(i);
    if(conf.getNome().equals(indice)){
    nameField.setText(conf.getNome());
    cpgnomeField.setText(conf.getCognome());
    mailField.setText(conf.getMail());
    }
    }
    }

    Tutto questo funziona ...
    Ora io ho un pulsante elimina, voglio che venga eliminato l'oggetto ConfigurazioneUtente legato alla selezione corrente ...
    private void delConfigurazioneUtente(){
    file = new File("mail\\account.dat");
    try{
    ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
    vettore = (Vector) in.readObject();
    String currentSelection = gestPanel.getIndiceCorrente();//restiuisce la stringa della selezione corrente
    for(int i = 0; i < vettore.size(); i++){
    ConfigurazioneUtente conf = (ConfigurazioneUtente) vettore.get(i);
    String a = conf.getNome();
    if(a.equals(currentSelection)){
    vettore.removeElementAt(i);
    }
    ecc.....

    Spero che ora sia un po + chiaro ,sono sicuro che non lo elimina perchè se chiudo il pannello e o riapro vedo che ricarica il vettore senza nessuna modifica...

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.