Question:
I am creating an application by using Symantec Cafe wherein I am using one applet, from which I am calling a series of frames. I have some common functions and variables amongst these frames that I must write in each frame code. I am thinking of making a Java package or library file that I would like to import when required in my Frame code. Is it possible?
Answer:
There are two ways for applets to share code. Begin by creatinga file holding the definition of a class containing all thevariables and methods to be shared. They should all be declaredstatic. For example:
// Comb.java // useful combinatorial functions class Comb { // = 1 * 2 * … * n public static int fact(int n) { int result = 1; for(int i = 1; i < n; i++) result = i * result; return result; } // etc. }Each applet can simply access the fact method by calling Comb.fact(n):
// Test.java public class Test extends Applet { private TextField inField, outField; public void init() { inField = new TextField(“INPUT”, 20); add(inField); outField = new TextField(“RESULT”, 20); add(outField); } public boolean action (Event e, Object arg) { if (e.target == inField) { int n = Integer.valueOf(inField.getText()).intValue(); int m = Comb.fact(n); outField.setText(“” + m); } else return false; // event not handled return true; // event handled } }When Test.java is compiled, the Java compiler will automatically locateComb.java and compile it. Further, loading Test.class will automaticallyload and link Comb.class.
If you plan using the methods and variables in Comb.java in futureapplications and applets, place the line:
package functions;at the very top of Comb.java, and compile it. On some systems thiscreates a directory called functions, and places Comb.class inside.Otherwise, you must do this yourself.
Next, either replace the call
Comb.fact(n)in Test.java with:
functions.Comb.fact(n)or, if this is a hassle, simply place the line
import functions.*;at the top of Test.java.
Of course the functions package can contain many classes, other packages,even .zip files made from classes.
When the Java compiler sees “import functions.*;” it looks in thecurrent directory for a directory called functions. If this directory does not exist, it next looks in each directory listed in CLASSPATH.
Thus, if youreally plan using the functions package often, you can start aspecial directory containing functions and other custom packages,then add the directory’s name to CLASSPATH (in autoexec.bat).