PDA

Visualizza la versione completa : [JAVA] Visualizzare un dialog dal menu a discesa


Nunkij
19-01-2006, 13:13
Salve a tutti
ho la necessità di visualizzare un dialog da un menu a discesa clickano sulla relativa voce come i programmi windows fanno quando la voce di un menu ha i "..." dopo.
Ho creato una classe principale che disegna l'interfaccia grafica della mia applicazione inserendo i vari menu a discesa.
Poi ho creato la finestra di dialogo impostandone la visibilità a false.
Infine ho creato una classe che implementa l'interfaccia actionlistener e la vorrei collegare ad una delle voci del menu a discesa. Come posso fare?
Le voci sono oggetti JMenu. Ho provato ad aggiungere un'istanza della classe ascoltatore ma non so come fargli capire che al click del menu 1 mi deve aprire il dialog 1, al 2 il 2, ecc ecc

Qualcuno mi sa aiutare oppure dare qualche link utile per risolvere questo problema?

Grazie a chi mi risponderà!

unomichisiada
19-01-2006, 13:37
Originariamente inviato da Nunkij
Salve a tutti
ho la necessità di visualizzare un dialog da un menu a discesa clickano sulla relativa voce come i programmi windows fanno quando la voce di un menu ha i "..." dopo.
Ho creato una classe principale che disegna l'interfaccia grafica della mia applicazione inserendo i vari menu a discesa.
Poi ho creato la finestra di dialogo impostandone la visibilità a false.
Infine ho creato una classe che implementa l'interfaccia actionlistener e la vorrei collegare ad una delle voci del menu a discesa. Come posso fare?
Le voci sono oggetti JMenu. Ho provato ad aggiungere un'istanza della classe ascoltatore ma non so come fargli capire che al click del menu 1 mi deve aprire il dialog 1, al 2 il 2, ecc ecc

Qualcuno mi sa aiutare oppure dare qualche link utile per risolvere questo problema?


Grazie a chi mi risponderà!
Mi sembra una cosa banale.Innanzitutto le voci di menu sono dei JMenuItem non dei JMenu che mi risulti.In secondo luogo una volta che hai associato un ActionListener devi solo implementare il suo metodo actionPerformed in modo che esso abbia l'istruzione pannelloDaVisualizzare.setVisible(true)

Nunkij
19-01-2006, 17:39
Sono riuscito ad aprire il dialog! Ora però non riesco ad implementare il bottone ANNULLA.
E' una richiesta di terminazione del programma. Clicki su exit nel menu. Si apre il dialog d conferma. Se premi ok si chiude tutto se premi annulla dovrebbe nascondere il menu. Il problema è che nell'action event chiamato quando clicko su annulla non riesco a passare un riferimento alla finestra da nascondere. Come posso fare?

unomichisiada
19-01-2006, 20:59
Originariamente inviato da Nunkij
Sono riuscito ad aprire il dialog! Ora però non riesco ad implementare il bottone ANNULLA.
E' una richiesta di terminazione del programma. Clicki su exit nel menu. Si apre il dialog d conferma. Se premi ok si chiude tutto se premi annulla dovrebbe nascondere il menu. Il problema è che nell'action event chiamato quando clicko su annulla non riesco a passare un riferimento alla finestra da nascondere. Come posso fare?
Invece di creare il dialog come JDialo semplice crei una classe ch eeredita da esso e la fornisci di un costruttore in cui passi il riferimento che ti serve

Nunkij
19-01-2006, 21:43
Ok ho risolto! Mi sn dannato il pomeriggio ma ce l'ho fatta!

Per chi avesse il mio stesso problema ecco una possibile soluzione!



ActionListener alAnnullaButton = new butListener_EscAnnulla(){

public void actionPerformed(ActionEvent e){
dlgEsc.setVisible(false);
}
};

unomichisiada
19-01-2006, 21:59
Originariamente inviato da Nunkij
Ok ho risolto! Mi sn dannato il pomeriggio ma ce l'ho fatta!

Per chi avesse il mio stesso problema ecco una possibile soluzione!



ActionListener alAnnullaButton = new butListener_EscAnnulla(){

public void actionPerformed(ActionEvent e){
dlgEsc.setVisible(false);
}
};


dlgEsc deve essere una variabile locale con modificatore final se è locale al metodo in cui si trova questo codice oppure un capo della classe cui il metodo appartiene.

Nunkij
20-01-2006, 00:18
Sì infatti è dichiarata final me l'ero scordato!

Loading