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

Discussione: [JAVA] JList

  1. #1

    [JAVA] JList

    Salve ragazzi,
    possibile inserire in una JList degli oggetti così come per il JCombo?

    ho visto che c'è il metodo add (Component, Object) ma non so a cosa serve!

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    11
    Non so a cosa serve il metodo che hai trovato tu; io so che si può creare la JList passando al costruttore un oggetto DefaultListModel e poi usare addElement(String s) della classe DefaultListModel.

  3. #3

    ti spiego

    Ti spiego cosa devo fare:

    Hai presente il moduletto utilizzato in Outlook per scegliere i contatti a cui inviare la mail?

    Tengo due JList, "ListaContatti" e "Destinatari"

    Inizialmente "Destinatari" è vuota mentre "ListaContatti" contiene l'elenco di tutti i contatti presenti in rubrica

    Il doppio click su un contatto lo trasferisce nell'altra lista!

    Il contatto però non è una stringa a me ma un oggetto perchè contiene id nome email

    Voglio che nella jlist compare solo il nome ma quando poi vado a verificare tutti i contatti presenti nella lista "Destinatari" riesco ad identificare id ed email

    Una cosa del genere l'ho fatta con JComboBox ma qui non so come gestire la cosa

    Help me

  4. #4
    prima devi creare un array di oggetti "contatti" poi lo devi passare alla lista in questo modo:
    codice:
    Contatti[] c= blablabla//creo l'array con i contatti
    JList contatti =  new JList(c);
    quando selezioni un item della lista devi gestire l'evento con un valuechanged, nn c'è bisogno di fare doppio click...

  5. #5

    ma...

    Ok per il riempimento delle liste, ma come posso poi gestire il passaggio da una lista ad un'altra?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ti posto un po' di codice

    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    class persona {
    
      private String nome, cognome, email;
    
      public String getName() {
        return nome;
      }
    
      public String getSurname() {
        return cognome;
      }
    
      public String getEmail() {
        return email;
      }
    
      public String toString() {
        return nome+" "+cognome+" <"+email+">";
      }
    
    
      persona(String nome, String cognome, String email) {
        this.nome = nome;
        this.cognome = cognome;
        this.email = email;
      }
    
    }
    
    public class selezionaContatti extends JFrame implements ActionListener {
    
      public void actionPerformed(ActionEvent ae) {
        if (ae.getSource().equals(done)) {
          if (whole.getSelectedIndex() != -1) {
            persona[] selectedp = new persona[whole.getSelectedIndices().length];
            for (int i = 0; i < selectedp.length; i++) {
              selectedp[i] = (persona) whole.getSelectedValues()[i];
            }
            selected.setListData(selectedp);
          }
        }
        else { //qualcosa per cancel
        }
      }
    
      private JList whole, selected;
      private JButton done, cancel;
    
      public selezionaContatti(persona[] pers) {
        super("Selezione Contatti");
        this.getContentPane().setLayout(new BorderLayout());
        this.getContentPane().add(new JLabel("Aggiungi/Rimuovi Contatti"), BorderLayout.NORTH);
    
        whole = new JList(pers);
        whole.setLayoutOrientation(JList.VERTICAL);
        whole.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        JScrollPane jspw = new JScrollPane(whole);
    
        selected = new JList();
        JScrollPane jsps = new JScrollPane(selected);
        done = new JButton("Continua");
        done.addActionListener(this);
        cancel = new JButton("Annulla");
        cancel.addActionListener(this);
        JPanel south = new JPanel();
        south.add(done);
        south.add(cancel);
        this.getContentPane().add(south, BorderLayout.SOUTH);
        JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jspw, jsps);
        split.setDividerLocation(300);
        this.getContentPane().add(split, BorderLayout.CENTER);
        this.setSize(600, 400);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
    
      public static void main (String args[]) {
        String[] nomi = {"Andrea", "Elisabbeta", "Angela", "Giuseppe", "Marco", "Matteo", "Michela", "Giulia"};
        String[] cognomi= {"Bianco", "Rossi", "Verdi", "Neri", "Marroni", "Celesti", "Grigio", "Bianchi"};
        persona[] p = new persona[nomi.length];
        for (int i=0; i < p.length; i++) {
          p[i] = new persona(nomi[i], cognomi[i], (cognomi[i]+"."+nomi[i]+"@html.it").toLowerCase());
        }
        selezionaContatti sc = new selezionaContatti(p);
      }
    }
    Allora, qui ho delegato ad un pulsante l'aggiungere elementi della lista di sinistra a quella di destra. Non va bene perché semplicemente resetta la lista di destra ogni volta che si fa una modifica mentre ci starebbe meglio una gestione più oculata (controllare quali elementi siano stati già aggiunti e non rimuovere niente se non esplicitamente richiesto). Puoi anche vedere il tutorial sulle liste (cerca swing tutorial) sul sito della sun.
    Ciao
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7

    txs

    grazie

  8. #8
    Ma io gli array non posso crearli staticamente,
    il contenuto delle due liste cambiano!
    Non è possibile aggiungere o eliminare un elemento dalla lista dinamicamente?
    Io avevo usato i Vector invece di array[]
    è sbagliato?

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Certo che puoi utilizzare i Vector.
    Se la JList non prende un Vector come argomento (non ricordo se lo prende o meno), puoi sempre eicavarti il relativo array in due modi:

    1) Utilizzando il metodo toArray() di Vector (che però ha problemi di cast con le stringhe)

    2) Creare un array dimensionandolo con vector.size() e popolarlo scorrendo tutti gli elementi del Vector.


    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

  10. #10

    ...

    ma estrarre tutti gli elementi dalla JList?

    avevo pensato a questo:
    n = numero di elementi presenti (ma come lo ottengo?)
    for (i=0; i<n; i++)
    estrai_elemento_iesimo


    Come posso fare?

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.