Avatar billede faded Nybegynder
07. november 2005 - 20:48 Der er 2 kommentarer og
1 løsning

Problemer med at få vist rette systray ikon

jeg er ved at lave en lille klient der skal vise om der er ny post på et site, til dette bruger jeg http://systray.sourceforge.net/ som kan bruges hvis man skal have et ikon i systemtray. Problemet er at når jeg kører programmet indefra eclipse, virker ikonerne rigtigt. Når jeg kører programmet selvstændigt som en exe jar fil, vises der en gif, der hedder rocket.gif. som er at finde i systray.jar filen.

Min kode se således ud

/*
* Login.java
*
* Created on 4. november 2005, 18:05
*/

package classes;

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.*;
import java.io.*;

import javax.swing.JOptionPane;
import javax.swing.UnsupportedLookAndFeelException;

import classes_io.ObjectWriterReader;

import snoozesoft.systray4j.SysTrayMenu;
import snoozesoft.systray4j.SysTrayMenuEvent;
import snoozesoft.systray4j.SysTrayMenuIcon;
import snoozesoft.systray4j.SysTrayMenuItem;
import snoozesoft.systray4j.SysTrayMenuListener;

/**
*
* @author Ole
*/
public class Login extends javax.swing.JFrame implements ActionListener,
        SysTrayMenuListener, Runnable {

    /**
    *
    */
    private static final long serialVersionUID = 1L;

    private static final int INIT_WIDTH = 150;

    private static final int INIT_HEIGHT = 150;

    /** Creates new form Login */
    public Login() {
        super("");
        initComponents();
    }

    /**
    * This method is called from within the constructor to initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is always
    * regenerated by the Form Editor.
    */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
    private void initComponents() {

        Dimension dimScreen = Toolkit.getDefaultToolkit().getScreenSize();

        int xPos = (dimScreen.width - INIT_WIDTH) / 2;
        int yPos = (dimScreen.height - INIT_HEIGHT) / 2;

        setBounds(xPos, yPos, INIT_WIDTH, INIT_HEIGHT);
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jPasswordField1 = new javax.swing.JPasswordField();

        getContentPane().setLayout(new java.awt.GridLayout());

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);
        jButton1.setText("ok");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton1);

        jButton2.setText("anuller");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton2);

        jLabel1.setText(" brugernavn");
        getContentPane().add(jLabel1);

        getContentPane().add(jTextField1);

        jLabel2.setText(" password");
        getContentPane().add(jLabel2);

        getContentPane().add(jPasswordField1);

        pack();
    }

    // </editor-fold>
    public void menuItemSelected(SysTrayMenuEvent e) {
        // TODO Auto-generated method stub
        if (e.getActionCommand().equals("luk"))
            System.exit(0);
        else if (e.getActionCommand().equals("log")) {
            login.show();
        } else if(e.getActionCommand().equals("om")) {
            JOptionPane.showMessageDialog(this," ver.1");
        }

    }

    public void iconLeftClicked(SysTrayMenuEvent arg0) {
        // TODO Auto-generated method stub

    }

    public void iconLeftDoubleClicked(SysTrayMenuEvent arg0) {
        // TODO Auto-generated method stub

    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        this.hide();
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        bNavn = jTextField1.getText();
        bPass = jPasswordField1.getText();

        UserPass us = new UserPass(bNavn, bPass);
        ObjectWriterReader owr = new ObjectWriterReader();
        try {
            owr.writeObject(us, "c:/object.data");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        this.hide();

        // STMenuTest theApp = new STMenuTest();

        if (!initOnce) {
            // create an exit item
            SysTrayMenuItem itemExit = new SysTrayMenuItem("Luk ned", "luk");
            itemExit.addSysTrayMenuListener(this);

            // create an about item
            SysTrayMenuItem logOn = new SysTrayMenuItem("Log på", "log");
            logOn.addSysTrayMenuListener(this);

            SysTrayMenuItem about = new SysTrayMenuItem("Om programmet", "om");
            about.addSysTrayMenuListener(this);

            // create the main menu
            menu = new SysTrayMenu(icons[0], toolTips[0]);

            // insert items
            menu.addItem(itemExit);
            menu.addSeparator();
            menu.addItem(logOn);
            menu.addSeparator();
            menu.addItem(about);
            initOnce = true;
        }
        new Thread(this).start();
    }

    private void checkNyMail(String navn, String pass) {
        StringBuffer res = new StringBuffer("");
        try {
            URL url = new URL(
                    "http://localhost:8080/seNyPost.jsp?b=" + navn
                            + "&p=" + pass);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("GET");
            con.connect();
            if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
                BufferedReader br = new BufferedReader(new InputStreamReader(
                        con.getInputStream()));
                String line;
                while ((line = br.readLine()) != null) {
                    res.append(line);
                    // res.append("\r\n");
                }
                con.disconnect();
            }
        } catch (IOException ex) {
            // ex.printStackTrace();
            menu.setIcon(icons[2]);
        }
        // System.out.println("resultat " + res.toString());
        if (res.toString().equals("1")) {
            menu.setIcon(icons[0]);
            System.out.println("1");
        }
        if (res.toString().equals("2")) {
            // SysTrayMenu.changeIcon(1);
            // SysTrayMenu.changeTooltip(toolTips[1]);
            menu.setIcon(icons[1]);
            System.out.println("2");
        }
        if (res.toString().equals("3")) {
            // SysTrayMenu.changeIcon(2);
            // SysTrayMenu.changeTooltip(toolTips[2]);
            menu.setIcon(icons[2]);
            System.out.println("3");
        }

    }

    /**
    * @param args
    *            the command line arguments
    * @throws UnsupportedLookAndFeelException
    * @throws IllegalAccessException
    * @throws InstantiationException
    * @throws ClassNotFoundException
    */
    public static void main(String args[]) {
       
        ObjectWriterReader owr = new ObjectWriterReader();
        login = new Login();
        UserPass up = new UserPass();
        boolean userPassOnDisk = true;
        try {
            up = (UserPass) owr.readObject("c:/object.data");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            userPassOnDisk = false;
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            userPassOnDisk = false;
        }
        if (userPassOnDisk) {
            System.out.println(up.getUser() + " " + up.getPass());
            jTextField1.setText(up.getUser());
            jPasswordField1.setText(up.getPass());
            login.show();
        } else {
            login.show();
        }
    }

    // End of variables declaration
    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("exit")) {
            // SysTrayMenu.destroy();
            System.exit(0);
        }
        if (e.getActionCommand().equals("log på")) {
            this.show();
        }

    }

    public void run() {
        while (true) {
            try {
                checkNyMail(bNavn, bPass);
                //Thread.sleep(60 * 1000);
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                System.out.println("Interrupted Exception caught");
            }
        }

    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;

    private javax.swing.JButton jButton2;

    private javax.swing.JLabel jLabel1;

    private javax.swing.JLabel jLabel2;

    private static javax.swing.JPasswordField jPasswordField1;

    private static javax.swing.JTextField jTextField1;

    private String bNavn;

    private String bPass;

    private static Login login;

    snoozesoft.systray4j.SysTrayMenu menu;

    // create icons
    static final SysTrayMenuIcon[] icons = {
    // the extension can be omitted
            new SysTrayMenuIcon("icons/duke"),
            new SysTrayMenuIcon("icons/duke_up"),
            new SysTrayMenuIcon("icons/duke") };

    private static final String[] toolTips = { "SysTray for Java rules!",
            "brought to you by\nSnoozeSoft 2004" };

    private boolean initOnce = false;

}
Avatar billede faded Nybegynder
07. november 2005 - 20:49 #1
jeg bruger den nyeste systray4j foresten
Avatar billede faded Nybegynder
07. november 2005 - 20:50 #2
Min manifest fil ser således ud
Manifest-Version: 1.0
Main-Class: classes.Login
Class-path: systray4j.jar
Avatar billede faded Nybegynder
08. november 2005 - 19:35 #3
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester