Javafx application with icone on the Tray system

Asked

Viewed 113 times

0

I am creating a Javafx application to perform queries in a database and save XML files. The application will run full-time on the machine that is in operation.

The application has a visual interface created using Javafx, to configure the parameters of the queries to be performed. But I don’t need this interface to leave the queries running.

How can I leave an icon on the Tray system to open the visual interface to configure the parameters.

1 answer

0

Here is an example of a class to display tryIcon:

import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
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.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Jonathan CR
 */
public class IconSys {

    public static void main(String[] args) {
        final TrayIcon trayIcon; // declarando uma constante do tipo TrayIcon
        frmMenu menu = new frmMenu();
        // Aqui vamos testar se o recurso é suportado
        if (SystemTray.isSupported()) {

            //declarando uma variavel  do tipo SystemTray
            SystemTray tray = SystemTray.getSystemTray();

            //declarando uma variavel  do tipo Image que contera a imagem tray.gif
            Image image = Toolkit.getDefaultToolkit().getImage("src\\personal.png");

            //Criamos um listener para escutar os eventos de mouse
            MouseListener mouseListener = new MouseListener() {

                public void mouseClicked(MouseEvent e) {

                }

                public void mouseEntered(MouseEvent e) {

                }

                public void mouseExited(MouseEvent e) {

                }

                public void mousePressed(MouseEvent e) {

                }

                public void mouseReleased(MouseEvent e) {

                }

            };

            // Criamos um ActionListener para a ação de encerramento do programa.
            ActionListener exitListener = new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    System.exit(0);

                }

            };

            // Criamos um ActionListener para a exibir uma mensagem na tela ao clicarmos
            //em um item do menu.
            ActionListener mostramsglistener = new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    JOptionPane.showMessageDialog(null, "Meus Programas JCR.", "JCR", JOptionPane.INFORMATION_MESSAGE);

                }

            };
            ActionListener prog1listener = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    try {
                        String caminho = menu.prog1;
                        Runtime.getRuntime().exec("cmd.exe /c start " + caminho);
                    } catch (IOException ex) {
                        JOptionPane.showMessageDialog(null, "Caminho do aplicativo não encontrado!");
                        Logger.getLogger(IconSys.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            };
            ActionListener prog2listener = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    try {
                        String caminho = menu.prog2;
                        Runtime.getRuntime().exec("cmd.exe /c start " + caminho);
                    } catch (IOException ex) {
                        JOptionPane.showMessageDialog(null, "Caminho do aplicativo não encontrado!");
                        Logger.getLogger(IconSys.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            };
            ActionListener gadgedlisner = new ActionListener() {
                public void actionPerformed(ActionEvent ae) {
                    try {
                        frmGadget frmGad = new frmGadget();
                        frmGad.setVisible(true);
                    } catch (Exception e) {

                    }
                }
            };

            //Criando um objeto PopupMenu
            PopupMenu popup = new PopupMenu("Menu de Opções");

            //criando itens do menu
            MenuItem mostramsg = new MenuItem("Exibir Informação");
            MenuItem prog1 = new MenuItem("Controle de Estoque");
            MenuItem prog2 = new MenuItem("Controle de Despesas");
            MenuItem gad = new MenuItem("Gadget");
            MenuItem defaultItem = new MenuItem("Sair");

            //na linha a seguir associamos os objetos aos eventos
            mostramsg.addActionListener(mostramsglistener);
            prog1.addActionListener(prog1listener);
            prog2.addActionListener(prog2listener);
            gad.addActionListener(gadgedlisner);
            defaultItem.addActionListener(exitListener);

            popup.add(mostramsg);
            popup.addSeparator();
            popup.add(prog1);
            //popup.addSeparator();
            popup.add(prog2);
            popup.addSeparator();
            popup.add(gad);
            popup.addSeparator();
            popup.add(defaultItem);

            trayIcon = new TrayIcon(image, "Programas Jonathan CR", popup);

            ActionListener actionListener = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    //adicionar form aki

                    menu.setVisible(true);
                    //trayIcon.displayMessage("Action Event", "Um Evento foi disparado", TrayIcon.MessageType.INFO);
                }

            };

            //Na linha a seguir a imagem a ser utilizada como icone sera redimensionada
            trayIcon.setImageAutoSize(true);

            //Seguida adicionamos os actions listeners
            trayIcon.addActionListener(actionListener);

            trayIcon.addMouseListener(mouseListener);
            //Tratamento de erros
            try {

                tray.add(trayIcon);

            } catch (AWTException e) {

                System.err.println("Erro, TrayIcon não sera adicionado.");

            }

        } else {

            //Caso o item  System Tray não for suportado
            JOptionPane.showMessageDialog(null, "recurso ainda não esta disponível pra o seu sistema");

        }
    }
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.