Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    7

    Finestra che LAMPEGGIA sulla barra delle applicazioni

    Salve,
    vorrei implementare in java un effetto analogo a quello che si ha con Messenger o altri programmi simili, per cui quando viene ricevuto un messaggio (e la finestra non è attualmente selezionata) la finestra lampeggia sulla barra delle applicazioni.

    E' possibile ottenere tale risultato in java? E come?

    Grazie in anticipo,
    ciao
    /* no comment */

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Dall'ultima versione di java (java 6) e' possibile accedere alla SystemTray e settare un'icona.
    Il lampeggiamento lo puoi gestire attraverso thread o timer.
    Posto un esempio banale con un timer.
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;
    import javax.swing.*;
    
    public class TestSysTray extends JFrame implements ActionListener, WindowListener {
        private SystemTray sys;
        private TrayIcon icon;
        private Image immagine;
        private Image immagineVuota;
        private Timer timer;
        private JButton start;
        private JButton stop;
        private JPanel pannello;
        
        private boolean flag = true;
        
        /** Creates a new instance of TestSysTray */
        public TestSysTray() {
            //Disegno il Frame e i suoi componenti
            super("test");
            pannello = new JPanel();
            start = new JButton("start");
            start.addActionListener(this);
            stop = new JButton("stop");
            stop.addActionListener(this);
            pannello.add(start);
            pannello.add(stop);
            this.setContentPane(pannello);
            
            //Setto la parte che si occupa del lampeggiamento
            timer = new Timer(500, this);
            immagine = Toolkit.getDefaultToolkit().createImage("C:\\Documents and Settings\\Simone\\Desktop\\red.PNG");
            immagineVuota = new BufferedImage(3,3,BufferedImage.TYPE_INT_ARGB);
            if(SystemTray.isSupported()) {
                sys = SystemTray.getSystemTray();
                icon = new TrayIcon(immagine);
                try {
                    sys.add(icon);
                } catch (AWTException ex) {
                    ex.printStackTrace();
                }
            }
            
            //ridimensiono il frame, setto l'operazione di chiusura e lo rendo visibile
            this.pack();
            this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
            this.addWindowListener(this);
            this.setVisible(true);
        }
        
        public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
            //Lampeggiamento. Ad ogni botta di Timer cambio l'immagine
            if(source.equals(timer)){
                if(flag) {
                    icon.setImage(immagineVuota);
                } else {
                    icon.setImage(immagine);
                }
                flag = !flag;
            } else if(source.equals(start)) {
                timer.start();
            } else if(source.equals(stop)) {
                timer.stop();
                icon.setImage(immagine);
            }
        }
        
        public void windowOpened(WindowEvent e) {}
        public void windowClosing(WindowEvent e) {
            //Alla chiusura rimuovo l'icona dalla SystemTray
            sys.remove(icon);
            this.dispose();
        }
        
        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) {}
        
        public static void main(String[] args) {
            new TestSysTray();
        }
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    7
    Ciao,
    ti ringrazio per la risposta.
    L'icona nel SystemTray lampeggia a dovere, ma a me serviva piu' che altro che la finestra lampeggiasse sulla TaskBar, così come accade per esempio in MSN messenger quando si riceve un messaggio.
    Cioè io vorrei che il "rettangolo" nel quale viene minimizzata la finestra sulla barra delle applicazioni (taskbar) lampeggi.
    Scusa se sono stato contorto nella spiegazione.
    Grazie
    /* no comment */

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    No, colpa mia che non avevo letto attentamente. (Non uso MSN, ma un programma alternativo e quando mi arrivano messaggi mi lampeggia l'icona nella SystemTray). Credo che un metodo immediato non ci sia, devi lavorare con codice nativo (quindi dipendente dalla piattaforma).
    In QUEST'ARTICOLO c'e' un esempio per windows a meta' pagina.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    7
    Ti ringrazio.
    ciao!
    /* no comment */

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.