IMPORTANT : A generic style manager is configured by default, so the explanation below is probably not of interest if you only want to change the look & feel of jZeno. In order to configure the settings of this generic style manager you can use the administration screen (Admin - Style).
Implementing your own style in jZeno is a matter of creating an implementation of the StyleManager interface. This interface has a couple of methods among which the method getStyle(). The method will be called with the name of a required style, and should return an Echo Style object.
In essence such a Style object is a simple hashmap that contains values of properties to be set on the components the style object is applied to. As a rule of thumb the names of the properties that are set on the Style objects will correspond to existing properties on jZeno dynamic components.
The string being passed into the getStyle() method is allmost allways the capitalized class name of a dynamic component in jZeno. So typical style names will be DYNAGRID, DYNATABLE and DYNATIMEFIELD. Note that these names are not the fully qualified names of the jZeno component, but the shortened class names. Not all styles that are requested to your StyleManager will be names of jZeno components, though. Some more general groups of styles also exist, like the style GENERAL. This style contains more general properties, like the color of the error marking around invalid components, or the background and foreground colors for required fields on your screens, etc...
As your StyleManager can be implemented in java code, it is entirely up to you on how you whish to create/store/configure and cache (or not cache - during development ?) your style objects. Your style manager could :
A good place to look is the source code to the net.sf.jzeno.echo.ZenoStyle.
package get.started; import nextapp.echo.Color; import nextapp.echo.EchoConstants; import nextapp.echo.Font; import nextapp.echo.Grid; import nextapp.echo.Insets; import nextapp.echo.Style; import net.sf.jzeno.echo.StyleManager; public class MyStyle implements StyleManager { public Style getStyle(String styleName) { Style ret = new Style(); if(styleName.equalsIgnoreCase("DYNAPICKLIST")) { ret.setAttribute("selectedTitle","selected"); ret.setAttribute("unselectedTitle", ""); ret.setAttribute("listBackground", Color.WHITE); ret.setAttribute("listForeground",Color.BLACK); ret.setAttribute("listVisibleRowCount", 12); ret.setAttribute("addLabel", ">"); ret.setAttribute("addAllLabel", ">>"); ret.setAttribute("removeLabel", "<"); ret.setAttribute("removeAllLabel", "<<"); ret.setImmutable(); } else if(styleName.equalsIgnoreCase("GENERAL")) { ret.setAttribute("invalidBackground", new Color(0x9b0000)); ret.setAttribute("invalidForeground", Color.WHITE); ret.setAttribute("requiredBackground", new Color(0xef5959)); ret.setAttribute("requiredForeground", Color.WHITE); ret.setAttribute("readOnlyBackground", new Color(0xE0E0E0)); ret.setAttribute("readOnlyForeground", Color.BLACK); ret.setImmutable(); } // .... return ret; } // ... Implement the oher methods of the interface // These should in essence provide meta-information // about the styles you return above, and are used // by the style manager screen... }