Chiudere un menù da programma

di il
2 risposte

Chiudere un menù da programma

Buongiorno,

Da programma creo un menù MnuStart a cui aggiungo un elenco di voci varie.
Successivamente, per esempio quando la form ottiene il fuoco, con il comando MnuStart.doClick() lo apro, ovvero mostro all'utente l'elenco delle voci caricate ma non riesco a trovare il metodo per chiuderlo.

Qualcuno sa indicarmi come fare per forzare la chiusura del menù?

2 Risposte

  • Re: Chiudere un menù da programma

    ZioCrick ha scritto:


    Qualcuno sa indicarmi come fare per forzare la chiusura del menù?
    Direi, l'insieme di:

    menu.setSelected(false);
    e
    menu.setPopupMenuVisible(false);

    (nessuna delle due "basta" da sola, ci sarebbe un effetto non bello)
  • Re: Chiudere un menù da programma

    Allora, cerco di spiegare meglio la situazione.
    Sto ancora lottando con il mio lanciatore di programmi, per il quale in passato mi hai dato preziosissime indicazioni.

    Per aprire automaticamente il menù di Start (MnuStart) nel momento in cui eseguo il programma o lo attivo tramite un'istanza dello stesso eseguita successivamente, avevo trovato il seguente codice da inserire nel costruttore del programma.
    
    SwingUtilities.invokeLater(new Runnable() {
       public void run() {
          MnuStart.doClick();   // Apre MnuStart all'attivazione.
       }
    });
    addWindowFocusListener(new WindowFocusListener() {
      public void windowGainedFocus(WindowEvent e) {
         MnuStart.doClick();    // Apre MnuStart al ricevimento del focus.
      }
    });
    
    E con questo ha funzionato per un bel po' di tempo.
    Poi ad un certo punto, non so cosa sia successo, dopo un po' di attivazioni di programmi e aperture documenti, in modo del tutto casuale, succede che il MnuStart resta aperto e non mi passa il fuoco al documento o applicazione lanciata.
    Per sbloccare la situazione devo fare click con il mouse sul documento o applicazione, al che il MnuStart si chiude.

    Oppure peggio ancora, succede che dopo aver chiuso un documento o applicazione il fuoco ritorna al lanciatore e non mi lascia più operare ne col mouse ne con la tastiera su altro che non sia lui stesso.
    E la situzione la sblocco o spostandomi su un altro menù dello stesso lanciatore che mi consente di terminare il programma, oppure scegliendo tra le varie voci di menù un'applicazione semplice come la calcolatrice e poi facendo click con il mouse sulla calcolatrice.
    Allora il MnuStart si chiude e posso operare normalmente.

    A questo punto ho aggiunto le istruzioni che mi hai indicato, alla fine del metodo in cui lancio i programmi o apro i documenti:
    
    private void menuItemActionPerformed(java.awt.event.ActionEvent evt) {
    
    // Varie istruzioni per lanciare programmi o aprire documenti.
    
       MnuStart.setSelected(false);
       MnuStart.setPopupMenuVisible(false);
    }
    
    Ma non cambia nulla.

    Non è il posto giusto per metterle?
    Oppure è sbagliato il modo in cui apro MnuStart?
Devi accedere o registrarti per scrivere nel forum
2 risposte