Intro

Developing sophisticated and responsive user interfaces in Java is complicated. Because of Java's concept of LayoutManagers you cannot simply place components at fixed coordinates, you rather have to deal with nested containers and layout constraints. This abstract way of describing a user interface renders visual editors only limited helpful.

If your application has to perform non trivial tasks in response of a user action, you will sooner or later have to deal with worker threads to keep the user interface responsive - unless your users are known to be very patient.

Another non trivial requirement of modern applications and especially of rich clients for internet applications is the ability to present the user interface in the language of the logged in user. Though Java provides wide support for internationalization and localization writing the required boiler plate code to make an application multi-lingual is not always fun.

The afore mentioned problems (and many more) are typical in the field of GUI design. The aim of the JGuiraffe library is to provide solutions for some common problems a developer faces again and again, e.g. constructing user interfaces, working with layout managers, dealing with dialogs and form beans, and more. This is of course not the ultimate tool you simply need to ask "do it for me" and it automatically does what you want (and after everything is completed serves you a nice cup of java). But it should provide some features which make a developer's life easier and allow him or her to concentrate on the business logic of the application to be created.

Features

The following list contains an overview of the topics addressed by the JGuiraffe library:

  • Provides some powerful layout managers which can be used to build complicated layouts.
  • Allows to define user interfaces in XML files thus supporting a clean separation between design and logic.
  • Supports an easy, but powerful way of dealing with input forms. The user's input can be automatically validated and - if validation was successfull - filled into a data object.
  • Basic support for different kinds of resource bundles to load internationalized messages or labels for GUI controls.
  • An implementation of the Command pattern that allows to execute code in reaction of a user action in a worker thread.

One main approach followed by this library is to extract as much information as possible from the Java code and to provide it in a declarative form. So it should be possible to alter the behavior of your application by simple modifying some configuration files.

Meaning of the name

JGuiraffe is an acronym, which stands for Java GUI, Resource, and Application Framework with Form Extensions. This is exactly what this framework is all about.

Requirements

JGuiraffe requires Java 1.5 or above. The libraries this project depends on can be found on the dependencies page.