|
About a year ago I started working on a project to create a client database
and registration system for dental clinic. The project is quite big
(it just moved to development stage 3 and is already successfully used for
over half year). But the main thing is it has really complicated GUI
screens.
My experience with building GUI's with Java was limited at the time.
I have always used Swing layouts and coded manually. It works well for small
screens, but the higher the complexity of the screen the more
difficult the task becomes. I started looking for tools to make my life
easier.
My finding was that all the tools that I could get on the net fall into
one of the categories:
- they don't do what I need at all;
- do it poorly and are buggy and not handy;
- if they can do it bearably then I HAVE to switch
to some development environment of theirs (something I don't do only because
it has one useful utility);
- I have to start using some custom layout
library and be bound with it forever (again, something I don't do every day).
Oh, I forgot to mention the tools that use absolute positioning. I ruled
them out from the very beginning because ABSOLUTE POSITIONING IS BAD for many
reasons.
Another thing I noticed about GUI builder tools is that they all try to
do the impossible - to replace the need of coding the source code. The idea
may seem beautiful for someone new in the field, but experienced programmer
knows that it doesn't work this way and never will.
So, I don't need a tool that allows me to select the color of JButton because
I know that I will still change it 10 times more later during the
development process. And for me typing
setBackground(new Color(...)) seems far easier then finding out
where the hell it is or locating it in an endless list of properties most of which
I will not use at all or use once or twice in my lifetime.
So, I put the guidelines for the tool I need. It should:
- allow me to easily lay out the components in a way I need;
- be visual and flexible to move around, change size and position of
the components;
- set main properties for the components (like title and variable name)
so I can easily locate them in the source code;
- not use absolute positioning;
- use only standard Swing components;
- be independent of any "big software" that I'm not planning to switch to;
- allow saving and loading of created designs;
- allow testing the designs on the fly without compiling.
That's how jvider was born. Enjoy!
January 27, 2003
Linas Urbonas
UAB "Midpoint systems"
|