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;
}
