Aplicação na barra de tarefas - TaskBar

1 resposta
C

Olá galera,
Ontem estava pesquisando sobre como colocar aplicação na barra de tarefas, mas os resultados nao foram tao animador,
muito complicado o conceito, eu ja tinha feito um código simpes antigamente, porém ruizinho..

Então hoje desenvolvi uma classe que faz isso automaticamente e com duas linhas de código você ja consegue implantar isso no seu sistema.

como usar:
///****************para usar********
//crie um objeto
TaskBar Task = new TaskBar("nome da sua imagem",this,"nome da sua aplicação"); //this referencia o proprio jframe

//no método construtor
Task.instanceTask();

//no evento de minimizar seu jframe deixe ele invisivel
private void formWindowDeactivated(java.awt.event.WindowEvent evt) {                                      
          this.setVisible(false);
    }

//pronto ;]

//********************************

//outras funções
//-> mostra mensagem no task
Task.displayMessageTask("titulo", "Chegou uma nova mensagem", 1);//1 -> referencia o tipo de mensagem (alerta, informação, erro)

//-> usa sequencia de mudança do icone do task
//pode ser usado pra ficar mudando o icone caso chega uma nova mensagem ou um aviso, etc..
Task.useSequenceImage("nome da imagem 1","nome da imagem 2", 400);//400 -> tempo de alternação da iimagem (1000 = 1s)

//altera o icone sem usar sequencia..
Task.alterImageTray("nome da sua imagem");

//observação: lembrando que a imagem está dentro da pasta src do seu sistema e o formato é png.

a classe esta logo abaixo da imagem
[img]http://img826.imageshack.us/img826/6103/taskpl.jpg[/img]

classe:
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 *
 * @author Charleston Anjos
 * @version 1.0 - 2013
 */
public class TaskBar {

    //Instance new SystemTray
    private static SystemTray Tray = SystemTray.getSystemTray();
    private static TrayIcon TrayIconBar;

    //variables
    private static String IconMain;
    private static JFrame frame;
    private static MouseListener mlOpcoes;
    private static String NameTask;

    //variables the alteration image
    private static boolean AlterCountTray = false;    

    /**
     *
     * @param icon
     * @param frame
     * @param nameTask 
     */
    public TaskBar(String icon, JFrame frame,String nameTask){
        this.IconMain = icon;
        this.frame = frame;
        this.NameTask = nameTask;
    }

    public void instanceTask(){                

        //alter image and instance task
        alterImageTray(IconMain);

        //add events mouse
        //initEventsMouse();

        //add icon in SystemTray
        try {           
            Tray.add(TrayIconBar);
        } catch (AWTException e) {
            e.printStackTrace();
        }

        AlterCountTray = true;

    }

    /**
     *
     * @param image
     */
    public void alterImageTray(String image){
        Image imageIcon = new ImageIcon(
                (this.getClass()
                     .getClassLoader()
                     .getResource(image + ".png")))//image get param
                     .getImage();

        //if not exist instance create new
        if (this.AlterCountTray==false){
            TrayIconBar = new TrayIcon(imageIcon,NameTask,initPopUpMenu());
        }else{
            TrayIconBar.setImage(imageIcon);
        }

        //image auto resize
        TrayIconBar.setImageAutoSize(true);
    }

    /**
     *
     * @param imageOne
     * @param imageTwo
     * @param time
     */
    //used with timerbean
    public void useSequenceImage(String imageOne, String imageTwo, int time){
        try {

            alterImageTray(imageOne); //image footprint parameter changes

            Thread.sleep(time); //time for change

            alterImageTray(imageTwo); //image footprint parameter changes
            
        } catch (InterruptedException ex) {
            Logger.getLogger(TaskBar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private void initEventsMouse(){
        //instantiates a mouse listener for use user be in TrayIcon
            mlOpcoes = new MouseListener(){

                public void mouseClicked(MouseEvent e) {
//                     frame.setVisible(true);
//                     frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
                }

                public void mousePressed(MouseEvent e) {}

                public void mouseReleased(MouseEvent e) {
                    /*  if the mouse is clicked with the wheel mouse or with
                     *  button right close the application 
                    if(e.getButton() == 2 || e.getButton() == 3){
                        //System.exit(0);
                    }*/
                }

                public void mouseEntered(MouseEvent e) {}

                public void mouseExited(MouseEvent e) {}

            };

         //add mouseListener in TrayIcon
        TrayIconBar.addMouseListener(mlOpcoes);
    }

    /**
     * @return PopUp
     */
    private PopupMenu initPopUpMenu() {

        PopupMenu popup = new PopupMenu();
        
        MenuItem miAbout = new MenuItem("Sobre");
        miAbout.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "TASK BAR\n"
                        + "Versão 1.0\n\n"
                        + "Desenvolvido por Charleston Anjos\n");
                       
            }
        });

        MenuItem miReturn = new MenuItem("Voltar");
        miReturn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                frame.setVisible(true);
                frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
            }
        });

        MenuItem miExit = new MenuItem("Sair");
        miExit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {                
                System.exit(0);
            }
        });
        
        popup.add(miAbout);
        popup.addSeparator();
        popup.add(miReturn);
        popup.addSeparator();
        popup.add(miExit);

        return popup;
    }

    /**
     *
     * @param title
     * @param message
     * @param type
     */
    public void displayMessageTask(String title, String message, int type){

        String style = "";

        if (type==0) style = "NONE";
        if (type==1) style = "INFO";
        if (type==2) style = "ERROR";
        if (type==3) style = "WARNING";

        TrayIconBar.displayMessage(title, message,TrayIcon.MessageType.valueOf(style));
    }    
}

1 Resposta

A

Poste um projeto com estes codigo pronto eu nao estou conseguindo coloca-lo em execuçao

Criado 25 de janeiro de 2013
Ultima resposta 28 de jun. de 2013
Respostas 1
Participantes 2