|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jul 2008
Messaggi: 10
|
[Java] Jlist in una finestra di dialogo
Ciao a tutti. Sono un novizio di Java ed ho iniziato da poco a realizzare delle semplici GUI. Ho realizzato un menù con varie voci (del tipo File, Modifica, Help ecc.): selezionando una di queste si apre un'ulteriore finestra di dialogo con due menù a tendina (Jlist) e un jButton ("ok"), dalle quali è possibile selezionare varie opzioni. Quello che vorrei sapere è come posso fare affinché la scelta in un menù "influenzi" quelle nell'altro: ad esempio, se della prima jList posso scegliere fra rettangolo, cerchio, quadrato e nella seconda Verde, Rosso, Giallo vorrei far sì che, scegliendo quadrato, nel secondo menù vengano mostrate solo le scelte Verde e Rosso, se scelgo cerchio solo Giallo e Rosso ecc. E' possibile fare una cosa del genere? come posso fare?
Grazie a tutti. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
JList listGeom = la JList dove l'utente seleziona la forma geometrica. JList listColor = la JList dove l'utente seleziona uno dei colori possibili per la forma selezionata in listGeom. Caricamento del JPanel dove sono inserite le JList: - carico tutti i valori possibili per listGeom; - al caricamento rendo selezionato il primo item di listGeom; - carico i valori di listColor con i valori possibili per l'item selezionato in listGeom; Interazione utente: - Click(selezione) su item in listGeom: recupero l'item selezionato e lo uso per ricaricare correttamente i valori di listColor; - Click(selezione) su item in listColor: recupero l'item selezionato; - Click su JButton "OK": faccio quello che devo con gli items selezionati/recuperati (una Forma e un Colore, tra quelli possibili per quella Forma). Andiamo a vedere in dettaglio come possiamo fare per implementare la funzionalità sopra evidenziata in grassetto. Appare evidente che da qualche parte deve esistere una sorgente dati da consultare, del tipo: forma -> listaColori; ovvero una collezione di forme geometriche, ognuna a sua volta associata a una collezione di Colori. Per esempio un HashMap, la cui chiave sia il nomeForma (String) e il cui valore sia una collezione di Colori. La collezione di Colori potrebbe essere un ArrayList di oggetti Color, per esempio. La tua struttura potrebbe per esempio essere così: Codice:
.... // chiave: String // valore: List<Color> HashMap<String,List<Color>> shapeColorMap; ... Codice:
... // creazione String con i nomi delle forme String rettangolo = "Rettangolo"; String quadrato = "Quadrato"; String cerchio = "Cerchio"; ... // creazione liste dei colori per ogni nome-forma ArrayList<Color> rettangoloColors = new ArrayList<Color>(); rettangoloColors.add(new Color.RED); rettangoloColors.add(new Color.GREEN); rettangoloColors.add(new Color.YELLOW); ArrayList<Color> quadratoColors = new ArrayList<Color>(); quadratoColors.add(new Color.RED); quadratoColors.add(new Color.GREEN); ArrayList<Color> cerchioColors = new ArrayList<Color>(); cerchioColors.add(new Color.RED); cerchioColors.add(new Color.YELLOW); ... // creazione mappa per associazione: nomeForma -> listaColori shapeColorMap = new HashMap<String,List<Color>>(); shapeColorMap.put(rettangolo, rettangoloColors); shapeColorMap.put(quadrato, quadratoColors); shapeColorMap.put(cerchio, cerchioColors); ... In dettaglio: -> al click dell'utente su una voce della JList listGeom si dovrebbe: 1) recuperare l'item selezionato (nomeForma); 2) usare l'item selezionato come chiave per recuperare la sua lista di colori dalla mappa Codice:
... List<Color> listColor = shapeColorMap.get(nomeForma); ... Spero di averti dato qualche spunto, ciao.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 06-03-2009 alle 09:44. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:33.