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