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
classe:
[code]
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));
}
}[/code]