View Full Version : [JAVA] Lista di oggetti in una GUI
Ciao a tutti, sto cercando di realizzare un programma p2p per il download di file.
Il funzionamento è il seguente: il client si connette al server, invia la lista dei propri file che vuole condividere, e attende che il server gli invii la lista dei file attualmente disponibili nella rete dei suoi client.
A questo punto, il client deve poter scegliere da quest'ultima lista un qualsiasi file e chiedere la connessione al client che lo possiede per scaricarlo.
Il problema è che non so come fare per visualizzare la lista dei file disponibili sulla gui del client...avevo pensato ad una AWT List, però prende in input solo String, e io vorrei poter memorizzare in questa lista un mio oggetto che fra i suoi campi abbia anche l'ip del proprietario, in modo che non sia necessario eseguire una ricerca su tutti i file per scoprire chi sia...
Qualcuno ha dei suggerimenti?
EDIT : Scusate, sono stato una mattinata a cercarlo e l'ho trovato solo ora.....probabilmente quello che cercavo è JList di swing, il cui costruttore prende come argomento un DefaultListModel, e il metodo addElement di DefaultListModel prende come argomento proprio Object!
Se avete comunque soluzioni migliori, o qualcosa che smentisca la mia ipotesi, vi sarei grato se me le comunicaste.
Ciao a tutti, sto cercando di realizzare un programma p2p per il download di file.
Il funzionamento è il seguente: il client si connette al server, invia la lista dei propri file che vuole condividere, e attende che il server gli invii la lista dei file attualmente disponibili nella rete dei suoi client.
A questo punto, il client deve poter scegliere da quest'ultima lista un qualsiasi file e chiedere la connessione al client che lo possiede per scaricarlo.
Il problema è che non so come fare per visualizzare la lista dei file disponibili sulla gui del client...avevo pensato ad una AWT List, però prende in input solo String, e io vorrei poter memorizzare in questa lista un mio oggetto che fra i suoi campi abbia anche l'ip del proprietario, in modo che non sia necessario eseguire una ricerca su tutti i file per scoprire chi sia...
Qualcuno ha dei suggerimenti?
EDIT : Scusate, sono stato una mattinata a cercarlo e l'ho trovato solo ora.....probabilmente quello che cercavo è JList di swing, il cui costruttore prende come argomento un Model, e il metodo addElement di DefaultListModel prende come argomento proprio Object!
Se avete comunque soluzioni migliori, o qualcosa che smentisca la mia ipotesi, vi sarei grato se me le comunicaste.
Innanzitutto hai fatto una ottima scelta a puntare sulla JList, perchè AWT è deprecato, ad eccezione ovviamente di quelle parti che sono state integrate in Swing.
Occhio comunque che mi sembra che la JList esegua il metodo toString() degli Object che ha nel Model, per popolarsi. Questo significa che nel caso di una stringa non c'è nessun problema, visto che toString() non restituisce altro che la stringa stessa, ma nel caso di un tuo oggetto dovrai occuparti di fare l'override di tale metodo.
In alternativa potresti tenere un arraylist separato con i tuoi oggetti, e poi popolare il Model quando necessario con delle semplici stringhe... entrambe le soluzioni sono valide.
banryu79
14-10-2010, 13:13
Puoi creare un model personalizzato, se lo desideri, e anche un renderer personalizzato. Questo link potrebbe aiutarti a mettere le mani su informazioni utili in tal senso:
- How to Use List [The Java Tutorials] (file:///C:/javaProjects/tutorials/BigIndex/tutorial/uiswing/components/list.html)
Puoi creare un model personalizzato, se lo desideri, e anche un renderer personalizzato. Questo link potrebbe aiutarti a mettere le mani su informazioni utili in tal senso:
- How to Use List [The Java Tutorials] (file:///C:/javaProjects/tutorials/BigIndex/tutorial/uiswing/components/list.html)
Questa invece è l'alternativa "difficile" :D
banryu79
14-10-2010, 13:24
Questa invece è l'alternativa "difficile" :D
Definisci "difficile"... :Prrr:
Non è difficile, sembra difficile, perchè non hai mai approfondito, dunque tutto ti sembra "misterioso"
In realtà lo sforzo più grosso richiesto per comprendere i concetti esposti in quella pagina di tutorial sono il tempo neccesario per consultare e provare con mano.
Ma a conti fatti è un buon investimento di tempo, secondo me, perchè alcuni concetti esposti circa i model e i renderer per la JList li ritrovi tali e quali come meccanismi che si ripetono e restano validi anche per gli altri componenti di Swing.
C'è anche da dire che quello è solo un tutorial, per approfondire in modo più agevole ci vorrebbe un buon testo; e anche quello non sarebbe più "difficile", ma più "costoso" :D
Definisci "difficile"... :Prrr:
Non è difficile, sembra difficile, perchè non hai mai approfondito, dunque tutto ti sembra "misterioso"
In realtà lo sforzo più grosso richiesto per comprendere i concetti esposti in quella pagina di tutorial sono il tempo neccesario per consultare e provare con mano.
Ma a conti fatti è un buon investimento di tempo, secondo me, perchè alcuni concetti esposti circa i model e i renderer per la JList li ritrovi tali e quali come meccanismi che si ripetono e restano validi anche per gli altri componenti di Swing.
C'è anche da dire che quello è solo un tutorial, per approfondire in modo più agevole ci vorrebbe un buon testo; e anche quello non sarebbe più "difficile", ma più "costoso" :D
Ho fatto qualcosa di simile con una JTable e il suo TableModel, e devo riconoscere che aiuta a chiarire le idee riguardo la logica che sta dietro a Swing.
Comunque Swing non mi piace molto, troppo macchinoso: trecento JPanel anche per un'interfaccia semplice.
Preferisco di gran lunga SWT :)
banryu79
14-10-2010, 13:41
Comunque Swing non mi piace molto, troppo macchinoso: trecento JPanel anche per un'interfaccia semplice.
Preferisco di gran lunga SWT :)
A ognuno il suo, sui gusti non si discute.
A ognuno il suo, sui gusti non si discute.
Chiaramente, questa era più una considerazione tra me e me ;)
Che poi alla fine molti sviluppatori disegnano le GUI in modo visuale, quindi il problema spesso non si pone.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.