Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339

    Aiuto : Visualizzare elementi di una Treeset su una frame

    Ciao a tutti.
    Allora ho creato una Treeset che contiene oggetti di tipo Articolo ; ogni oggetto Articolo ha attributi come marca , modello , prezzo ecc.
    Vorrei visualizzare il contenuto della Treeset su una Frame magari utilizzando una JList.

    Si può fare ?

    Si può scegliere di visualizzare per ogni oggetto uno o più dei suoi attributi ?

    Grazie anticipatamente

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Markus85 Visualizza il messaggio
    Allora ho creato una Treeset che contiene oggetti di tipo Articolo ; ogni oggetto Articolo ha attributi come marca , modello , prezzo ecc.
    Vorrei visualizzare il contenuto della Treeset su una Frame magari utilizzando una JList.

    Si può fare ?
    Possibile sì, lo è ma non direttamente dal TreeSet, perché è un "insieme" (sebbene ordinato essendo un TreeSet) e non è accessibile "per indice" mentre JList si basa su un "model" (ListModel) che è concettualmente una lista indirizzata per indice.
    La implementazione predefinita, DefaultListModel, è modellata su un Vector e DefaultListModel ha metodi es. addElement. Quindi già questo ti permette di passare i dati da TreeSet ad un DefaultListModel.

    Quote Originariamente inviata da Markus85 Visualizza il messaggio
    Si può scegliere di visualizzare per ogni oggetto uno o più dei suoi attributi ?
    Il renderer predefinito di JList fa una cosa molto banale con gli oggetti esposti dal ListModel: invoca toString() per ottenere il testo da visualizzare nella cella.

    Se il toString() di Articolo ti soddisfa (o se no, se puoi/vuoi modificarlo), ok. Altrimenti hai almeno 2 strade:
    1) Implementare un renderer "custom" che sostituisce (o al limite incapsula, andando ad alterare solo il testo) quello originale.
    2) Creare una classe es. ArticoloItem che incapsula un Articolo. ArticoloItem avrà il toString() appropriato (prende ciò che vuoi da Articolo) e il list model conterrà appunto dei ArticoloItem.
    Ultima modifica di andbin; 17-10-2013 a 21:04
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Se il toString() di Articolo ti soddisfa (o se no, se puoi/vuoi modificarlo), ok. Altrimenti hai almeno 2 strade:
    1) Implementare un renderer "custom" che sostituisce (o al limite incapsula, andando ad alterare solo il testo) quello originale.
    2) Creare una classe es. ArticoloItem che incapsula un Articolo. ArticoloItem avrà il toString() appropriato (prende ciò che vuoi da Articolo) e il list model conterrà appunto dei ArticoloItem.
    Si diciamo che il toString va bene.... Per ogni oggetto faccio visualizzare tipo marca e modello con questo metodo.

    Quello che ti voglio chiedere ora è :

    posso far si che la stringa visualizzata sia cliccabile?

    Cioè per esempio , io visualizzo l'articolo aggiunto alla TreeSet sulla JList (Computer Asus G1 per esempio) e voglio cliccare su questa stringa che rappresenta l'articolo per poterci fare qualcosa , tipo togliere l'articolo dalla TreeSet e metterlo in un array di Articoli.

    It's Possibile?

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Certo, dai un'occhiata ai metodi di JList.
    http://docs.oracle.com/javase/tutori...nlistener.html
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Certo, dai un'occhiata ai metodi di JList.
    http://docs.oracle.com/javase/tutori...nlistener.html
    Ok vediamo che esce....

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Markus85 Visualizza il messaggio
    posso far si che la stringa visualizzata sia cliccabile?
    Se vuoi basarti sul concetto della "selezione", c'è il listener ListSelectionListener (ma serve solo per sapere quando è la selezione che cambia) e ci sono metodi per sapere quale/i elemento/i di JList sono "selezionati". Questo è utile quando gestisci altre azioni (da pulsanti, menù) per operare sulla selezione (es. un pulsante per "eliminare gli elementi selezionati").

    Altrimenti se vuoi puoi basarti sugli eventi "crudi" del mouse. Registra un MouseListener su JList e poi nel mouseXyz() (insomma, il metodo che ti interessa), prendi il Point dell'evento e verifichi in quale cella "cade" il punto con il metodo di JList locationToIndex(Point).

    In qualunque modo ottieni un indice logico, dalla selezione o da eventi del mouse, a quel punto fai quello che vuoi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Se vuoi basarti sul concetto della "selezione", c'è il listener ListSelectionListener (ma serve solo per sapere quando è la selezione che cambia) e ci sono metodi per sapere quale/i elemento/i di JList sono "selezionati". Questo è utile quando gestisci altre azioni (da pulsanti, menù) per operare sulla selezione (es. un pulsante per "eliminare gli elementi selezionati").

    Altrimenti se vuoi puoi basarti sugli eventi "crudi" del mouse. Registra un MouseListener su JList e poi nel mouseXyz() (insomma, il metodo che ti interessa), prendi il Point dell'evento e verifichi in quale cella "cade" il punto con il metodo di JList locationToIndex(Point).

    In qualunque modo ottieni un indice logico, dalla selezione o da eventi del mouse, a quel punto fai quello che vuoi.

    Ok al di la di questo....
    Come associo la TreeSet alla Jlist ?

    Devo fare il toString degli elementi della TreeSet e passarli alla Jlist?

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.