Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160

    TrayIcon e sistemi operativi che non la supportano

    QUando si utilizza una trayicon, si consigli di chiamare prima il metodo isSupported() per verificare che il sistema operativo lo supporti, appunto.
    Nel caso in cui la chiamata a questo metodo dovesse restituire false, si dovrebbe disattivare la trayicon e per fare questo, ho pensato io ma potrei sbagliarmi, dovrei fare questo:

    codice:
    //Crea il tray icon
        private static void creaTrayIcon() throws AWTException {
            //Check the SystemTray support
            if (!SystemTray.isSupported()) {
                System.out.println(LanguageResource.getText("error.systemtray"));
                firstFrame.removeWindowListener(new WindowListener() {
    
                    public void windowOpened(WindowEvent e) {}
    
                    public void windowClosing(WindowEvent e) {}
    
                    public void windowClosed(WindowEvent e) {}
    
                    public void windowIconified(WindowEvent e) {}
    
                    public void windowDeiconified(WindowEvent e) {}
    
                    public void windowActivated(WindowEvent e) {}
    
                    public void windowDeactivated(WindowEvent e) {}
                });
                return;
            }
            final PopupMenu popup = new PopupMenu();
            final TrayIcon trayIcon =
                    new TrayIcon(createImage("images/mySpace.png", "tray icon"));
            final SystemTray tray = SystemTray.getSystemTray();
            .......
    Dimeticavo di specificare che ho collegato la minimizzazione a trayicon al bottone minimizza della barra del titolo della finestra.

    Che dite?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: TrayIcon e sistemi operativi che non la supportano

    Originariamente inviato da Cool81
    codice:
                firstFrame.removeWindowListener(new WindowListener() {
    
                    public void windowOpened(WindowEvent e) {}
                    ....
                });
    Che dite?
    Che dico io? Che non ha assolutamente alcun senso che cerchi di rimuovere un listener che ..... semplicemente .... non è mai stato registrato visto che a removeWindowListener stai passando un nuovo listener istanziato in quello stesso momento!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    Ok, andando oltre i banali errori dei principianti (che spero di non fare più al più presto),
    è giusto dire che se il SO non supporta, bisogna rimuovere l'ascolto sull'evento della finestra oppure sto sbagliando proprio punto di vista?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Cool81
    è giusto dire che se il SO non supporta, bisogna rimuovere l'ascolto sull'evento della finestra
    Tecnicamente sì ... potresti anche farlo, a patto di passare esattamente lo stesso reference del listener che avevi registrato!

    Sarebbe però meglio fare il contrario: se è supportato allora registra il listener e fai il resto .... perché se non è supportato, è inutile che crei il menù di popup, la immagine, il TrayIcon ecc....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Ti consiglio questo articolo in italiano dello Javastaff sull'argomento http://www.javastaff.com/article.php...70610151334854
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  6. #6
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    Grazie,ma credo di aver risolto chiamando il metodo che crea la trayicon solo dopo aver verificato che il sistema operativo la supporti.
    grazie ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.