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

    Inserire Immagini in JList

    Buona sera! ho un problema che mi stà facendo espledere le cervella

    Allora seguitemi:

    Ho un pannello JPanel in cui ho inserito delle JLabel una sotto l'altra le quali contengono delle ImageIcon. In parole povere ho caricato n immagini in n etichette e le ho inserite una sotto l'altra in un pannello. Ora: come faccio a inserire questo pannello al lato di una JList con Jscroll per far si che le al lato delle mie scritte nella jlist ci siano le immagini che scorrono su e giù assieme scrollando???

    Ho usato queste funzioni postate in altri form ma sono molto confuso.........


    list.setListData(ArrayList.toArray() );

    list.setCellRenderer(new MyLabelCellRenderer ());




    class MyLabelCellRenderer implements ListCellRenderer
    {
    public Component getListCellRendererComponent (JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
    {


    return Pannello
    }


    Se non metto list.setListData(ArrayList.toArray() ); non visualizza nulla.... se lo metto visualizzale le icone male una sopra l'altra... In pratica non mi è chiaro il funzionamento.. Scusate se mi sono dilungato...

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

    Re: Inserire Immagini in JList

    Originariamente inviato da ozymandias89
    Ho un pannello JPanel in cui ho inserito delle JLabel una sotto l'altra le quali contengono delle ImageIcon. In parole povere ho caricato n immagini in n etichette e le ho inserite una sotto l'altra in un pannello. Ora: come faccio a inserire questo pannello al lato di una JList con Jscroll per far si che le al lato delle mie scritte nella jlist ci siano le immagini che scorrono su e giù assieme scrollando???
    Come l'hai appena detto ... non è molto chiaro. Se vuoi che in JList ci siano, in ciascuna cella, testo E icona, devi implementare in modo appropriato un ListCellRenderer.
    C'è un mio esempio tra i miei Java Examples, nella sezione List boxes.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Soluzione

    Allora anche grazie al maestro andbin sono arrivato alla soluzione di questo enigma... posto il link che ho utilizzato per la risoluzione, in seguito posterò anche la spiegazione che mi ha inviato privatamente andbin se mi concederà il permesso. cmq guardate questa guida: e un grazie ad andbin

    http://antoniotancredi.altervista.or...ersonalizzati/

  4. #4
    Ciao. Il link ai miei Java Examples l'ho rimesso giusto oggi nella mia firma. Comunque il link più diretto è:
    http://andbin.altervista.org/java/e...oxes/index.html
    è il primo esempio "Create a JList with texts and icons", c'è anche uno screenshot, così vedi subito se è quello che vuoi.


    Citazione:


    ozymandias89 ha scritto un messaggio il giorno 24-07-2013 20:11:
    Mi spieghi come funziona questa classe cellrender e soprattutto come avviene il passaggio di parametri? Ogni informazione è utile grazie.

    ListCellRenderer è una interfaccia che dichiara un solo metodo: getListCellRendererComponent. Il metodo riceve una serie di dati, tra cui il Object che è un elemento del model (ListModel) che contiene i dati, il index cioè l'indice logico della cella in JList e due boolean che indicano se la cella deve essere selezionata e/o ha il focus.

    Il renderer deve solo "preparare" lo stato di un componente, che poi restituisce e che poi verrà letteralmente "stampato" nella cella del JList. Quelli che vedi in JList non sono pertanto dei "veri" componenti ... sono solo una "proiezione" dei componenti forniti dal renderer.

    Dal momento che non serve (e non ha molto senso, per efficienza) creare nuovi componenti, il renderer in genere si definisce in modo che è-un componente. Ad esempio in genere estende JLabel. E quindi la istanza del componente è una sola e il getListCellRendererComponent restituirà semplicemente this ovvero la istanza stessa del renderer.

    Per ribadire il tutto, JList chiede es. al renderer: "senti renderer, preparami un componente che poi io stampo nella cella 6". Il concetto è questo.

    Nei miei Java Examples, quell'esempio che ho indicato mostra testo E icona nelle celle di JList e per farlo ho fatto in modo che gli elementi nel model non siano semplici String ma degli oggetti che modellano appunto testo+icona. Il renderer riceve quindi questo oggetto, estrae testo e icona e prepara sé stesso (essendo un JLabel) e poi restituisce il this.

    Non è l'unico modo, dipende come si vuole legare il testo alla icona (o viceversa), se in modo esplicito e arbitrario (come nel mio esempio) o in modo più implicito (es. se nel model ci fosse una stringa "quadrato", il renderer sa che deve mettere la icona di un quadrato).

    Guarda il mio esempio, se hai dubbi, chiedi pure.
    Saluti.

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.