a JFormField Primer
The Java "Tool Kit" is designed to provide a user
friendly data entry form deigned to enter, edit and Save a "Collection" of
information from your applications end user via. The "heart" of the
com.jFormTK Development System is the JFormField which is designed
to represent each field of each Form in an com.jFormTK Application.
The following figure illustrates a completed JFormForm. It is the "Family
Physicians" Form from the Professional Computer Solutions [PCS] Survivors List PLUS
The blue with black print annotations point to the five major sections of a
JFormForm as follows:
- Application Title:
The title provided when the Application Form [JFormForm] Object is instantiated.
The com.jFormTK provided default Application Tabs as follows:
- Table Edit
- Quick Edit
- Address Book
Shown are the com.jFormTK default Tabs. The Controls and
Forms Tabs are required. The Table Edit, Quick Edit
and Address Book Tabs are optional. There may be additional, Application
specific Tabs added as required.
- JFormField :
Each field of the JFormForm is a JFormField. For example the "Specialty"
JFormField is annotated in the figure. The remainder of this document focuses on the
- JFormFrame Controls:
The JFormFrame Control Buttons.
These buttons are the system defaults. Each button may be removed or disabled as required.
The button order is also controlled by the Application Developer either for the entire
Application or on a per Form basis.
- Prompt Line:
The "Prompt" line provided with each JFormField instance is displayed as each
unique JFormField is processed via the keyboard [Enter / "TAB] Key
or via selection with the mouse.
See the Framework documentation for a detailed
description of these com.jFormTK objects.
The com.jFormTK produces each field of an Application Form via the following
'B' = Button;
- Create a "Form Object" for each Application Form by sub-classing the
com.jFormTK. JFormForm Class.
- Create each Field to be placed on the JFormForm via the
The current JFormField object Types are as follows:
'C' = Choice Drop Down Box;
'L' = Label;
'R' = Radio Button Field;
'T' = Text Field;
'X' = Checkbox
NOTE: The Text Field" JFormField may also be flagged with the following
JFormField Types for additional run-time processing:
'N' for "Numeric
D' for "Date
After the custom JFormForm has been Created and the initial
JFormFields have been inserted onto the JFormForm , the JFormForms
showForm Method is used to show the completed JFormForm.
Using the JFormField Field Object.
Each field is instanced using one of the
JFormField Constructors. For example the "Specialty" Field that is
annotated on the above sample Form is created using the following JFormField
JFormField Specialty = new JFormField(this, "Specialty", "Specialty:
"Enter the Doctor's Specialty, e.g General Pratictioner",
_NotRequired, _NoHint, _TField, _FldSize, _FontSize);
util.addObject (this, DoctorSpecialty, 2, Row, 3,1, GroupName, "");
The following table shows the fields of the com.jFormTK.JFormField
constructor and a description of each parameters usage by the above Specialty
Field" code snippet:
||The host JFormForm
||Generally use the Java this
field to identify the Current JFormForm class.
||Name used in ID Field
||Name used to label the Field
||User "Prompt Line
||"Enter the Doctor's Specialty, e.g
||Required Field Flag
||Hint Button Flag
= 'C' - Choice Drop Down
= 'L' Label
= 'T' - Text Field OR 'N' for
= 'X' - Checkbox
= 'R' RadioButton
= 'A' - Add "Group"
= 'D' Delete "Group"
||Text Field Size
||Text Field Font Size
* - The com.jFormTK has a set of mnemonic string used
to make the usage of the various com.jFormTK Constructors easier to read.
They start with the _ character. Some examples
that apply to the above table are as follows:
boolean for Required Field Flag: _NotRequired, _Required.
boolean for Hine Button existance: _NoHint, _Hint.
char for the JFormField Type: _BField, _CField, LField,
_TField, _XField, _Rfield
int for Text Field Size: _FldSize
int for Text Field Font Size: _FontSize
These controls have a com.jFormTK System Default set that may be modified for
each Application via usage of the com.jFormTK Data Base methods.
** - The A and D Types are used to
control the run-time addition or deletion from a com.jFormTK Group Table. This
"GroupName tabular processing is described later in this document.
Each JFormField" has the following properties:
- Object ID
Each JFormField is assigned a unique identifier, i.e. the ID property. This
identifier uses the Java "dot" notation as follows:
The Name field is provided via the JFormField Constructor. The
GroupName and SetNumber fields are used to uniquely identify each
element of a com.jFormTK.JFormForm Group. See the com.jFormTK Group description below.
- Prompt Line
Provided when the JFormField is instanced. Displayed in the Prompt
section as each Field [JFormField] gains the Forms focus.
- Required / not Required Field Flag.
Controls if the associated field has been flagged as a "Required Data Entry"
field. The com.jFormTK Developer may flag a field as "Required" if
it is necessary for the successful completion of one of more Application Analysis
For example, if you provide an Application Analysis feature to compute the end users
"Net Worth", then perhaps a field requesting the estimated value of the
persons home would be a "Required Field".
- Help Annotation
If the com.jFormTK Application end user presses the F1 key a
Help Window is displayed over the JFormForm Control Button panel.
The Help information displayed shall be automatically constructed at the time
the Field [JFormField] is instanced. This is basically a repeat of the Prompt
information and some annotations as a function of the JFormField Type. For
example, the following Help text is added if the JFormField Type
is _Cfield, i.e. a Choice JFormField:
Prompt + LF + "Use the 'up' / 'down' arrows to move to your selection" + LF +
"OR" + LF + "Select Button with the Mouse to see the Choices and select the
required choice." + LF + LF + "The Choice Items are as follows:
where LF is the platform specific "Line Feed" code.
If you have additional Help information that you want to add to the
constructed Help message, or you want to add your own Application specific
Help annotation, the following JFormField Methods are available:
- public void preHelp(String s)
prefix the constructed Help String with the given String.
- public void postHelp(String s)
postfix the constructed Help
String with the given String.
- public void replaceHelp(String s)
replace the constructed Help String with the given
- Hint Button
Each JFormField Field may have a Hint Button appended to the
field. This feature is designed to enable the Application Developer to provide additional
information as to the design purpose or required input for the associated field. If this
field is true, the Following Java code line is used to enter the information to be
displayed when the end user selects the "Hint" Button:
- addHint("place the HELP Text here! ");
If the addHint Method is not used, a simple default Hint message
is presented to the end user.
If a 'Hint' Button is required for a Label Type [_LField] JFormField, then the button
annotation s set to "Definition". For all other JFormField Types the Hint Button
has the "Hint" annotation. See the "Remove Doctors" button on the
above sample Form.
- Text Field Size
Indicates the width, in Pixels of the JFormField. The system default [__FldSize] is set to
- Font Size
Indicates the Font Size for the associated JFormField. The system default [__FldSize] is
set to 12]
Note that there is a 'JFormField' Constructor that does not require the "Text File
Size' and the 'Font Size' parameters. Generally it is advisable to keep the "Look and
Feel" of the Application Forms consistent and frequent modification of these
parameters are a distraction to the Application end user.
- The Pre / Post run time processing.
Each unique com.jFormTK.JFormForm.JFormField has a Pre / Post Processing
property that allows the com.jFormTK developer to control processing before a
JFormField gains the Form Focus and as a JFormField gives up the
This property enables the com.jFormTK Application Developer to control the
content of a JFormField before and after it is processed by the Application
end user. For example, a preProcessor operation may be used to enhance the end
user data entry by setting default fields based on previously entered data or by
Application defaults setup in one of the com.jFormTK data bases. A
postProcessor run-time operation may be used to compute a variable that is
then loaded into the com.jFormTK Common Data Base for usage by later
JFormFields preProcessor operations.
The Java Form Tool Kit [com.jFormTK] contains "boiler plate" Java code that
enables the Java Application Developer to write the specific code that is required for the
individual pre / post processing operations plus a set of
JFormField Methods designed to ease the development of run-time Assignment
Statements [both static and conditionally] plus the dynamic entry of individuals into the
com.jFormTK Address Book.
See the Run Time JFormField Function document
for a complete description of these Dynamic run-time capabilities.
Most data entry forms require a Variable number of
"Data Sets" to be entered by the end user. For Example, the Survivors List PLUS
Physicians Form requires that the end user enter information for all the
Family Doctors. For each Doctor, the following four fields [JFormFields] are
required: DoctorName, Patient, Specialty and Phone Number. These fields represent a
"Data Set" for each Doctor.
To enter a variable number of Sets to a JFormForm, the Java Form Tool Kit [com.jFormTK]
uses the "Group" Concept. A "GroupName" is specified and the
number of "Data Set" fields and number of "Data Set Display Rows" are
identified for each Form "Group". Special JFormField Buttons are
used to add or remove Data Sets to / from each Group of an Application Form.
For example, with the Physicians Form of the Professional Computer Solutions
Survivors List PLUS Application the "Group Name" is "Doctors", the
number of fields per data set is 4 [Name, Patient, Specialty, Phone] and the number of
rows per set is 2. This com.jFormTK form then uses a More Doctors
Button to add a variable number of Physicians to the Application "Doctors Group
and the Remove Doctors to remove a Physician from the Doctors
Group. See the "Family Physicians Survivors List PLUS figure above.
Application Field Referencing
Earlier in this document, the JFormField identifier
was described. If a Form Field is one of the elements of a "Group Data Set",
then the Group Name [GroupName] and Set number [SetNumber] parts of the
JFormField ID must be used to uniquely identify each element of a
For example, the JFormField.getID method for the "Specialty" Field
of the second Doctor in the above Survivors List PLUS Family Physicians Form
would yield the following identification String: "Doctors.Specialty.1".
To uniquely reference the above JFormField from
another Application Form, the above JFormField ID shall be prefixed with the
Survivors List PLUS Family Physicians ID. For example, if the Category =
"Directory", Sub Category = null [not sed], and the JFormForm File
Name is = "Physicians", then the JFormForm ID would be
"Directory.Physicians" and the complete JFormField Reference to the
above 2nd Specialty Field would be as follows: