Monday, September 6, 2010

Hot to make a system Tray icon using Java

To load objects or Images in the system tray using Java copy and paste this code to begin your work.

package systemtray;

import java.awt.*;
import java.awt.event.*;

public class SystemTrayTest
{
  
    public SystemTrayTest()throws AWTException
    {
      
        final TrayIcon trayIcon;

        if (SystemTray.isSupported()) {

            SystemTray tray = SystemTray.getSystemTray();
            Image image = Toolkit.getDefaultToolkit().getImage("tray.gif");

            MouseListener mouseListener = new MouseListener() {
              
                public void mouseClicked(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse clicked!");                
                }
                public void mouseEntered(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse entered!");                
                }
                public void mouseExited(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse exited!");                
                }
                public void mousePressed(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse pressed!");                
                }
                public void mouseReleased(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse released!");                
                }

            };

            ActionListener exitListener = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.println("Exiting...");
                  //I've added my code to Exit Add Your code here to perform various actions.
                    System.exit(0);
                }
            };
            //creates a pop up when we make a right click on the system tray object
            PopupMenu popup = new PopupMenu();
            MenuItem defaultItem = new MenuItem("Exit");
            defaultItem.addActionListener(exitListener);
            popup.add(defaultItem);
            //creates a pop up when we make a right click on the system tray object
   MenuItem defaultItem1 = new MenuItem("please dont exit");
            defaultItem.addActionListener(exitListener);
            popup.add(defaultItem1);
            //Creates a tray icon with the image u provide
            trayIcon = new TrayIcon(image, "Tray Demo", popup);

            ActionListener actionListener = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    trayIcon.displayMessage("Action Event",
                        "An Action Event Has Been Peformed!",
                        TrayIcon.MessageType.INFO);
                }
            };
          
            trayIcon.setImageAutoSize(true);
            trayIcon.addActionListener(actionListener);
            trayIcon.addMouseListener(mouseListener);

            //    Depending on which Mustang build you have, you may need to uncomment
            //    out the following code to check for an AWTException when you add
            //    an image to the system tray.

            //    try {
                      tray.add(trayIcon);
            //    } catch (Exception e) {
            //        System.err.println("TrayIcon could not be added.");
            //    }

        } else {
            System.err.println("System tray is currently not supported.");
        }
    }
  
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)throws AWTException
    {
        SystemTrayTest main = new SystemTrayTest();
    }
  
}
Dont forget to add the image tray.gif in the classpath

How to make a jar file

How to Make A JAR File

JAR files are Java's version of ZIP files. In fact, JAR uses the ZIP file format. There are two main uses for JAR files which I shall explain here. The first use is to compress (make a smaller size) a number of files into one file (archiving). The second use is to make a Java executable JAR file.

Compress Files to a Java Archive (JAR)

This is by far the most common use for JAR files: to compress multiple files into a single JAR archive. JAR files can be opened with WinZip or WinRar. In terms of Java applications, the ability to archive any number of source or class files into one single archive represents the biggest advantage - distributing one file containing hundreds of files is so much easier than distributing hundreds of files separately!
The jar utility program is run from the command line (DOS prompt or bash for example, depending on your OS). Here is how to create a compressed JAR file:

   jar cf archive_name.jar files


Let's look at each part of that command line.

Jar

The command to run the jar utility.

CF

Create a new archive with the file name specified. These two options are from this list of common options:

- c create new archive
- t list table of contents for archive
- x extract named (or all) files from archive
- u update existing archive
- v generate verbose output on standard output
- f specify archive file name
- m include manifest information from specified manifest file
- 0 store only; use no ZIP compression
- M do not create a manifest file for the entries
- i generate index information for the specified jar files
- C change to the specified directory and include the following file

Multiple options can be used together. They all must appear after the "jar" command with no white space separating them.

archive_name.jar
Name of the JAR file. This can only be included if you use the 'f' option.

Files

Names of all the files you want to put in the jar file. This could be just one name or a list of multiple names separated by space. Names can use pattern matching characters to match multiple files.

Common Examples

Let's say I have a Java application consisting of three source files that I wish to distribute:

One. Java
Two. Java
Three. Java

I also want to call my JAR file example.jar. To make a JAR file with just One.java:

   jar CF example.jar One.java

To make a file with all three files listed separately:

   jar CF example.jar One.java Two.java Three.java

To make a file with all three files using a pattern match:

   jar CF example.jar *.java

It goes (almost) without saying that the source files are in the same directory you are running the jar command in.

Compress Files to an Executable Java Archive (JAR)

It is also possible to make an archive that can be executed (run) by Java and even by a double click through your OS, if you have it set up correctly. Of course, to do this you must store compiled class files in the archive, as well as or instead of Java source files, since Java source files cannot be run!
Continuing the example above, I now compile my Java source files:

   javac *Java

Or

   javac One.java Two.java Three.java



Create An Executable JAR

All JAR files contain something called a manifest file which holds information Java wants to know. One piece of information a manifest file may contain is the name of a class that will be run if the JAR file is executed.
The first thing you must do is create a text file that lists the "main" class - the class that has the main method you want executed when the JAR is executed. Let's say that Three from the above example has the main method I want executed. I create a text file called "mainClass.txt" with the following text:

Main-Class: Three

IMPORTANT: the text file only needs the one line of text for this purpose. However, the file must end with a blank line or this will not work, ie the file has two lines in it - the second one is empty. Note too the class is called "Three" and not "Three.java" (the file containing the source code) or "Three.class" (the file containing the byte codes). If your class file is in a package hierarchy, you must use the fully qualified name of the class (eg "myPackage.MyClass").
I then run the jar utility with this command line:
   jar cmf mainClass.txt example.jar *.class
With this line, I told jar to create a JAR file (option c) with modifications to the manifest file (option m) as specified within mainClass.txt, naming the JAR file (option f) as example.jar and including everything that matches the pattern *Class


Running An Executable JAR From Command Line

I can run it from the command line like this:

   java -jar example.jar


Running An Executable JAR From Explorer (Windows)

Within Windows, it is also possible to set up Windows Explorer so that you can double click on the JAR file icon to execute the file (handy for GUI applications). The first thing you must do is set up the correct association with the 'javaw.exe' application that JDK for Windows will have. Click here for an older example with pictures! Open Windows Explorer and select Tools | Folder Options | File Types.
If there is no JAR file type, create it. Give it a description like

   jar - Executable Jar File

to ensure it sorts under 'jar'. Create or edit the action called "open" and associate it with the following action:

   "C:\Java\jdk1.4.0\bin\javaw.exe" -jar "%1"


Of course, you will replace "C:\Java\jdk1.4.0\bin\javaw.exe" with whatever path is correct on your machine.

IMPORTANT: include the double quotes to take care of names with spaces.
If you are using something other than Windows and you know how to set up an association in your OS.

Further Resources

Java's Tutorial on Jar files:

http://java.sun.com/docs/books/tutorial/jar/

Roedy Green's JAR file page:

http://www.mindprod.com/jglossjar.html#JAR


Tuesday, August 31, 2010

Remote method Invocation (RMI)

Remote method invocation is used to invoke methods across the networks...... The objects have to be registered in the rmi-registry..... Its like the yellow pages where all the entries are registered. From the Rmi- Registry we can access the objects but the service name has to be known to access the objects.


Remote Interface :


import java.rmi.Remote;
import java.rmi.RemoteException;

public interface remote extends Remote {
    int getSum(int a,int b) throws RemoteException;
}

Server :




import java.rmi.*;
import java.rmi.server.*;

public class server extends UnicastRemoteObject
                           implements remote
{
    public server() throws RemoteException {
        super();
    }

    public int getSum(int a,int b) {
return a+b;
    }

    public static void main(String[] args) {
      
        try {
            server engine = new server();
            Naming.rebind("samplermi", engine);
            System.out.println("Server bound");
        } catch (Exception e) {
            System.err.println("server exception: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

Naming.rebind() method puts the engine object in the name "samplermi".

Client :

// Java Document

import java.rmi.*;

public class client {
    public static void main(String args[]) {
try {
            remote obj = (remote) Naming.lookup("samplermi");
            System.out.println(obj.getSum(10,20));
        } catch (Exception e) {
            System.err.println("client exception: " + e.getMessage());
            e.printStackTrace();
        }
    }  
}

The client access the remote object using the "samplermi" service name.

Thursday, August 26, 2010

Grab from Internet

If u want to scrap or grab any thing from internet just use this code ..........

Java Scrapping code :


import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;




public class Grab {
public static void main(String a[]) throws IOException
{
String url="http://yahoo.com";
URL u=new URL(url);
URLConnection uc=(HttpURLConnection) u.openConnection();
DataInputStream br = new DataInputStream(new BufferedInputStream(uc
.getInputStream()));

int len;
while ((len = br.read()) != -1){
System.out.println((char)len);
}}
}


Just change the "url" variable alone to grab from any other sites.

Simple Short Cuts in Eclipse

Dont spend much time in working with indentation and comments in eclipse.......
Eclipse provides much more easier way to do this.

These are some of the most used short cuts in eclipse which makes your work easier.

Run a Program ctrl+F11


System.out.println : after typing "syso" press ctrl + space 

Toggle comment : ctrl + /    (//comments)

Block comment : ctrl + shift + / (/* block comment */)

Remove Block Comments : ctrl + shift + \

before this, select the content which you have to comment.

To correct Indentation  : ctrl + I
      
To format the contents : ctrl + shift + f


Organize imports ctrl+shift+O


Undo Typing : ctrl +z 

To select perspectives : ctrl + F8

Wrod Completion : Alt + / or ctrl+ space

Shit I want my Old versions of codes back in Eclipse

Problem :
I'm a developer in java, I use Eclipse to develop my application. I've encountered a new problem,
My yesterday's code was working fine, but my new code is not working. 
I want my yesterday's code back in eclipse.


Is there any way in eclipse ??


Solution :


Eclipse provides a new way to get your past codes back.


Right Click on the code area -> Local History --> compare with option 


You can find the older versions of the code. You can find older versions with exact time stamp.
Click the code and compare with your code. 

How to add Run time variables in Eclipse

If u r using eclipse as IDE to develop your project and got struck at how to pass run time arguments to a program .... here is the solution to add the run time Arguments in Eclipse.

select Run->Run Configurations ->Arguments tab

1.click the run option



2. select RunConfiguration option


3. Select the Arguments tab 






String.split()

Use of the String.split()
split() is used to split a given string based on a pattern.......

code :


public class UseOfSplit {
public static void main(String args[]) {
String str = "This is the sample String to split";
String pattern=" ";
String[] tmp = str.split(pattern);
for (int i = 0; i < tmp.length; i++) {
System.out.println(tmp[i] + "------");
}
}
}


output :


This------
is------
the------
sample------
String------
to------
split------

java code to Read from File

Java code to read from a file.....

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class ReadFromFile {


public static void main(String[] args) throws IOException {


BufferedReader in = new BufferedReader(new FileReader("sample.txt"));
String str;
in.readLine();


while ((str = in.readLine()) != null) {
System.out.println(str);


}
}


}

Exception involved :
  
       Exception in thread "main" java.io.FileNotFoundException: sample.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at java.io.FileReader.<init>(FileReader.java:41)
at Snap.main(Snap.java:14)

Which means File not found in the path.

How to resolve this error: 
Make sure that this "sample.txt" File resides where the bin folder exists