Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - [Java] [SWING][JList] Problema visualizzazione elementi lista
Forum - Java - [Java] [SWING][JList] Problema visualizzazione elementi lista

Avatar
crack001 (Normal User)
Rookie


Messaggi: 52
Iscritto: 25/10/2007

Segnala al moderatore
Postato alle 17:17
Giovedė, 28/07/2011
Salve a tutti gente, avrei un piccolo problemino con un pannello di un interfaccia, questo pannello fa parte di un progetto che č uscito abbastanza lungo quindi non sto a postare l'intero sorgente anche perche mi serve per l'universita. Vi spiego il problema, io ho bisogno di un pannello dove inserisco nome e cognome, seleziono l'operazione da compiere da un JComboBox e premo ok, fino a qui tutto bene, il problema arriva quando ad un operazione del ComboBox corrisponde la ricerca e la visualizzazione di alcuni oggetti (sotto forma di String altrimenti non li visualizza la JList) di una determinata classe.

Alla fine della ricerca mi ritrovo un arraylist che contiene tutti questi oggetti, e con l'opportuno metodo toString() ridefinito nella classe degli oggetti che sto usando dovrei riuscire a stamparli nel JList, il problema č che quando creo la lista e vado a settargli dove prendere i dati

Codice sorgente - presumibilmente Plain Text

  1. Codice sorgente - presumibilmente Plain Text

  2. listaprenotazioni.setListData(ALPr.toArray());




mi succede che la lista viene creata ma non visualizza una mazza xDDDD

vi mostro il codice interessato:

Questo č il metodo che crea il pannello che contiene la lista e lo visualizza sul frame
Codice sorgente - presumibilmente Java

  1. [CODE]
  2. public JPanel cancellaPrenotazione(){
  3.                 JPanel cancellaPrenotazione=new JPanel();
  4.                 cancellaPrenotazione.setLayout(new BorderLayout());
  5.                 ArrayList<Prenotazioni> ALPr=Cliente.searchPren(nome,cognome);
  6.                 JList listaprenotazioni=new JList();
  7.                 listaprenotazioni.setListData(ALPr.toArray());
  8.                 JScrollPane container=new JScrollPane(listaprenotazioni);
  9.                 cancellaPrenotazione.add(container,BorderLayout.NORTH);
  10.                 return cancellaPrenotazione;
  11.         }
  12. [/CODE]



e questa č la signature del metodo che utilizzo per riempire l'ALPr
Codice sorgente - presumibilmente Java

  1. [CODE]
  2. public static ArrayList<Prenotazioni> searchPren(String nomeC, String cognC)
  3. [/CODE]



quest'ultimo funziona correttamente, perche se l'arraylist ottenuto in ritorno lo esploro con un foreach e lo stampo su terminale stampa la ricerca che dovevo fare io, quindi presumo che il problema sia solo nella creazione della JList nel metodo cancellaPrenotazione().

Da premettere che č la prima volta che utilizzo swing...Poi volevo fare una domanda un po diretta. La creazione di un interfaccia grafica, risulta pių ottimale se fatta in un unica classe, quindi con la creazione di pannelli e vari listener in una sola classe, oppure con la creazione di piu classi, una classe per ogni interazione dell'interfaccia??

Attendo vostre risposte ;D ;D ;D

PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 10:13
Venerdė, 29/07/2011
Dovresti postare tutto il codice ..
questa istruzione " ArrayList<Prenotazioni> ALPr=Cliente.searchPren(nome,cognome); "
il metodo searchPren() ritorna una lista di oggetti di classe Prenotazioni??
beh credo di si
Comunque secondo me dovresti creare un metodo

Codice sorgente - presumibilmente Java

  1. public String getPren(){
  2.       return (pren.nome +"  "+ pren.cognome);
  3. }



nella classe Prenotazioni
poi per inserire questi dati nel JList io farei cosi:

intanto elimina queste 2 righe
   JList listaprenotazioni=new JList();
   listaprenotazioni.setListData(ALPr.toArray());
nel senso che,  listaprenotazioni non sa com'č "fatto" l'array che gli passi č pre questo motivo che non te lo fa vedere..
devi facciamo un casting:
Codice sorgente - presumibilmente Plain Text

  1. Prenotazioni x[] = listaprenotazioni.toArray(new Prenotazioni[listaprenotazioni.size()]);



a questo punto abbiamo un array di prenotazioni e con il metodo getPren() "riempiamo" il JList ovvero:

Codice sorgente - presumibilmente Java

  1. JList jlist = new JList();
  2. for(int i=0;i<x.lenght;i++){
  3.     jlist.add( x[i].getPren() );
  4. }



Spero di esserti stato utile ciao :)

PM Quote