PDA

View Full Version : Sottomenu


loop4633
12-11-2010, 12:34
Ciao a tutti, ho un problemino con la mia interfaccia grafica, come faccio a gestire i sottomenu? Mi spiego ho fatto una semplicissima barra con File->exit
Come faccio ad impostare l'uscita quando si clicca su exit? io ho provato:


private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1.setAction(javax.swing.WindowConstants.EXIT_ON_CLOSE);
}


mi da errore, il compilatore dice che ha bisogno di javax.swing.Action ma non riesco a sistemare, ho letto pure sul manuale thinking in java ma non trovo una soluzione! Sapete aiutarmi o indirizzarmi su qualche riferimento decente?
Grazie

loop4633
15-11-2010, 11:45
up

loop4633
15-11-2010, 15:09
Possibile nessuno sa come fare? Datemi un riferimento un segno di vita, qualcosa... trovo solo riferimenti ai tasti di scelta rapida

wingman87
15-11-2010, 16:12
Leggi la documentazione di javax.swing.Action -> LINK (http://download.oracle.com/javase/6/docs/api/index.html?javax/swing/Action.html)

loop4633
15-11-2010, 16:25
wingman87 grazie per la risposta!
Purtroppo ho letto quella documentazione, ma non mi è stata utile, non capisco come settare quest'azione per quel pulsante...

wingman87
15-11-2010, 20:05
Non sono esperto di swing, quindi provo a darti una soluzione basandomi su quanto letto sulla documentazione.
Tra i vari metodi degli oggetti Action c'è actionPerformed che viene richiamato in questo caso quando viene cliccata la voce del menu associata. Action è un'interfaccia, per passare un Action dovresti quindi implementare tutti i suoi metodi ma per fortuna c'è la classe AbstractAction che offre un'implementazione di default di tutti i metodi lasciando definire al programmatore il metodo actionPerformed. Sfruttando le classi anonime puoi quindi scrivere ad esempio:

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1.setAction(new AbstractAction(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
}

loop4633
15-11-2010, 22:04
wingman87 grazie mille, non c'era neanche bisogno dell'Abstractaction bastava un semplicissimo System.exit(0) mi sono convinto che doveva essere qualcosa di complicato... mentre era semplicissimo...
grazie ancora
ciao

wingman87
15-11-2010, 22:32
Hai ragione, non mi ero accorto che il codice era già racchiuso in un handler dell'evento, pensavo fosse un metodo qualunque.

loop4633
15-11-2010, 22:38
capita :D ma hai salvato il mio neurone che si stava friggendo!