Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Ricerca personalizzata

Java utilizzo di Jlist

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto UtenteMassimoB

0
voti

[1] Java utilizzo di Jlist

Messaggioda Foto Utentespivo » 21 gen 2018, 19:06

Ciao a tutti,
sto tentando di fare un piccolo programmino in Java che partendo da un array crei un l'oggetto Jlist.

Sto facendo qualche esperimento e sono riuscito a fare questo:
Codice: Seleziona tutto
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JList;
import javax.swing.DefaultListModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.util.Collections;
import java.awt.*;

public class MyClass {
    private JFrame f;
    private Container c;
    private Label l;
    private DefaultListModel<String> listModel;
    private JList<String> lista;
    private String array[] = new String[11];

   public MyClass (){
        f = new JFrame("Principale");
        c = f.getContentPane();
        l = new Label("....");

            array[0] = "Paolo";
            array[2] = "Franceso";
            array[5] = "Giovanni";
            array[7] = "Luca";
            array[8] = "Mario";
            array[9] = "Franceso";
           
            listModel = new DefaultListModel<String>();
           
            for (int i = 0; i <= 10; i++) {
                if(array[i] != null){
                listModel.addElement(array[i]);
                }
            }
           
            lista = new JList<String>();
            lista.setModel(listModel);

                lista.addListSelectionListener(new ListSelectionListener() {
                    @Override
                    public void valueChanged(ListSelectionEvent e) {
                    if (!e.getValueIsAdjusting()) {
                    String selezione = lista.getSelectedValue();
                    l.setText(selezione);                   
                    }
                    }
                });
               
           
        c.setLayout(new BorderLayout());
        c.add(l,BorderLayout.NORTH);
        c.add(new JScrollPane(lista),BorderLayout.CENTER);
        f.setSize(400,150);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);

    }
     
   public static void main(String args[]) {
        MyClass p = new MyClass();

    }
 
}

il programmino funziona però ora vorrei che la lista dei nomi fosse in ordine alfabetico.

Ho provato il metodo "Collections.sort" di "java.util.Collections" ma credo non possa essere applicato a DefaultListModel; ho anche provato ad utilizzare "ArrayList" che sono riuscito ad ordinare ma non può essere assegnata a Jlist. #-o

Avete qualche consiglio Grazie Ciao.
Avatar utente
Foto Utentespivo
370 1 12
Frequentatore
Frequentatore
 
Messaggi: 178
Iscritto il: 19 dic 2012, 21:29

0
voti

[2] Re: Java utilizzo di Jlist

Messaggioda Foto UtenteTardoFreak » 21 gen 2018, 19:09

Oddio, sembra un suggerimento lapalissiano ... ordina la matrice e poi caricala sulla lista.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,3k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15959
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[3] Re: Java utilizzo di Jlist

Messaggioda Foto Utentespivo » 21 gen 2018, 19:20

Grazie,
Non so come poter ordinare un array
ma ora pensandoci potrei creare una ArrayList dall'array di origine per poi ordinarla con Collections.sort, poi passarla a DefaultListModel e in fine a JList.
Un po' complicato per un semplice ordine alfabetico :shock:
che ne dite?
Avatar utente
Foto Utentespivo
370 1 12
Frequentatore
Frequentatore
 
Messaggi: 178
Iscritto il: 19 dic 2012, 21:29

0
voti

[4] Re: Java utilizzo di Jlist

Messaggioda Foto UtenteDavideDaSerra » 21 gen 2018, 19:41

Una soluzione potrebbe essere quella di usare un comparatore

Codice: Seleziona tutto
List<TuoOggetto> list = new ArrayList<TuoOggetto>();
Comparator<TuoOggetto> comparatore = new Comparatore<TuoOggetto>() {
    @Override
    public int compare(TuoOggetto sx, TuoOggetto dx) {
        return sx.getValue() - dx.getValue(); // usa la logica che vuoi
    }
};

Collections.sort(list, comparatore);
System.out.println(list);


Se 'tuo oggetto' implementa l'interfaccia 'Comparable' puoi fare Collections.sort(list)
Avatar utente
Foto UtenteDavideDaSerra
70 3
New entry
New entry
 
Messaggi: 83
Iscritto il: 21 gen 2018, 18:41

0
voti

[5] Re: Java utilizzo di Jlist

Messaggioda Foto Utentespivo » 21 gen 2018, 19:58

DavideDaSerra ha scritto:Se 'tuo oggetto' implementa l'interfaccia 'Comparable' puoi fare Collections.sort(list)


Grazie, si ho provato qualcosa del genere ma come posso passare un oggetto ArrayList a JList?
Avatar utente
Foto Utentespivo
370 1 12
Frequentatore
Frequentatore
 
Messaggi: 178
Iscritto il: 19 dic 2012, 21:29

0
voti

[6] Re: Java utilizzo di Jlist

Messaggioda Foto UtenteTardoFreak » 21 gen 2018, 19:59

Puoi passare tutti gli elementi con un ciclo, come hai già fatto nel tuo esempio.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,3k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15959
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[7] Re: Java utilizzo di Jlist

Messaggioda Foto UtenteDavideDaSerra » 21 gen 2018, 20:14

Con il costruttore opportuno di Jlist:

JList(ListModel<E> dataModel)

devi implementare l'interfaccia ListModel
Avatar utente
Foto UtenteDavideDaSerra
70 3
New entry
New entry
 
Messaggi: 83
Iscritto il: 21 gen 2018, 18:41

0
voti

[8] Re: Java utilizzo di Jlist

Messaggioda Foto UtenteTardoFreak » 21 gen 2018, 20:53

spivo ha scritto:...Non so come poter ordinare un array...

Questa è una cosa a cui dovresti rimediare.
E' grave non sapere ordinare un array.
Potresti cogliere l'occasione per esercitarti. ;-)
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,3k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15959
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[9] Re: Java utilizzo di Jlist

Messaggioda Foto Utentefaberebaf » 21 gen 2018, 20:58

Non capisco.

Dal codice si evince che che carichi l'array con delle costanti.
Quindi ha ragione Foto UtenteTardoFreak in [2] cioè ordinala tu prima di darla in pasto alla Jlist.
Se l'input dell'array è variabile, l'ordinamento potrebbe essere fatto durante il caricamento.

O_/
Avatar utente
Foto Utentefaberebaf
66 2
New entry
New entry
 
Messaggi: 69
Iscritto il: 4 nov 2007, 19:51

0
voti

[10] Re: Java utilizzo di Jlist

Messaggioda Foto Utentespivo » 21 gen 2018, 21:38

TardoFreak ha scritto:Puoi passare tutti gli elementi con un ciclo, come hai già fatto nel tuo esempio.

si, credo sia il sistema più semplice,
una volta creato ArrayList che posso ordinare li passo a DefaultListModel che posso caricare in JList,
l'unica cosa mi sembra un procedimento un po' intrecciato.

TardoFreak ha scritto:E' grave non sapere ordinare un array.

Purtroppo si, ma è da poco che uso java e a parte Visualbasic che è tutt'altra cosa è il primo linguaggio a oggetti che uso; tu credi che potrei ordinare nel ciclo for che uso anche per eliminare le gli array vuoti?

DavideDaSerra ha scritto:JList(ListModel<E> dataModel)

come posso caricare un ArrayList con questo costruttore?

Caio
Avatar utente
Foto Utentespivo
370 1 12
Frequentatore
Frequentatore
 
Messaggi: 178
Iscritto il: 19 dic 2012, 21:29

Prossimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti