I'm brand new to this forum and relatively new to Java. I'm currently supporting an application that runs on a PDA using the NSI CrEme runtime. (The person who developed it is gone, and it's mine to support ... which is OK because I want to learn Java.)
Anyway, here's my question. The CrEme runtime is compatible with JDK 1.1.8. I can't use Swing ... just AWT. I have all kinds of input fields including date/time, phone number, etc. I'm familiar with edit masks in other languages and applications I've worked with in the past. Is there anything available in Java at this level of the JDK? I'm really looking for some sample source that might help me out. I've found sample source on the web in C and C++ that implement maskable edit fields, but nothing in Java. Can anyone help me out?
An example of a text field where an edit mask would be helpful is a date field. I would like to force the input to be ##/##/#### where '#' signifies a numeric digit [0-9] and the '/' characters are already present in the field (i.e. do not have to be typed.) The text field would look something like __/__/__. If the user typed the date 12/01/2004, he would type 1 and then 2. The caret would then skip past the '/' sign allow the 0 and 1 to be typed, etc. Other types of fields that come to mind that could use edit masks are phone number fields and time fields. This feature is pretty common on handheld/PDA applications, mainly because characters such as '/' are awkward to get to. They often require some sort of shifting of the keyboard to a different mode --- not very user friendly.
Hi Frank, Thanks a bunch for your explanation. Now have a glance below, and try it out. Hope this fits your need. Bye, - SAi ======================================================================= ======================================================================= This example uses a JFormattedTextField to allow the display and editing of a date. By default, when the component loses the focus and the modified value is a valid date, the modified value is saved. Otherwise, if the modified value is not a valid date, the modified value is discarded and the old value is displayed. // Support a date in the MEDIUM format in the current locale; // see e322 Formatting and Parsing a Date Using Default Formats. // For Locale.ENGLISH, the format would be Feb 8, 2002. JFormattedTextField tft1 = new JFormattedTextField(new Date());
// Support a date in the SHORT format using the current locale. // For Locale.ENGLISH, the format would be 2/8/02. JFormattedTextField tft2 = new JFormattedTextField(DateFormat.getDateInstance(DateFormat.SHORT)); tft2.setValue(new Date());
// Retrieve the date from the text field Date date = (Date)tft3.getValue();
The following example demonstrates how to dynamically change the format: // Change the format to: 2/8/2002 DateFormatter fmt = (DateFormatter)tft3.getFormatter(); fmt.setFormat(new SimpleDateFormat("d/M/yyyy"));
// Reformat the display tft3.setValue(tft3.getValue()); ======================================================================= ======================================================================= This example uses a JFormattedTextField to allow the display and editing of certain fixed-string patterns. By default, when the component loses the focus and the modified value is valid, the modified value is saved. Otherwise, if the modified value is not valid, the modified value is discarded and the old value is displayed. The pattern is specified using one of the following characters: # represents a decimal digit, H represents a hex digit, U represents an uppercase letter, L represents a lowercase letter, A represents a number or letter, ? represents a letter in any case, and * represents any character. Any other character in the pattern represents itself. If it is necessary to use one of the special characters, it can be escaped by preceding it with a quote (').
The spot where a character or digit is expected is called a placeholder. By default, a placeholder is represented with a space character. The space is automatically replaced as the user fills in the field. This example demonstrates how to use an asterisk as the placeholder character. // A social security number fmt.setPlaceholderCharacter('*'); JFormattedTextField tft3 = new JFormattedTextField(fmt);
Thanks for the response. Unfortunately, I can't use Swing. The NSIcom CrEme java runtime I'm using is jdk v1.1.8 compatible. I'm planning on migrating to the J2ME J9 runtime some time in the future, but I'm restricted to AWT in that environment also.
The world of PDA development has it's own set of unique challenges.