FieldEdit - an Applet to validate data as it's being entered : TextField « Swing JFC « Java






FieldEdit - an Applet to validate data as it's being entered

    
/*
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002.
 * All rights reserved. Software written by Ian F. Darwin and others.
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * 
 * Java, the Duke mascot, and all variants of Sun's Java "steaming coffee
 * cup" logo are trademarks of Sun Microsystems. Sun's, and James Gosling's,
 * pioneering role in inventing and promulgating (and standardizing) the Java 
 * language and environment is gratefully acknowledged.
 * 
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for
 * inventing predecessor languages C and C++ is also gratefully acknowledged.
 */

import java.applet.Applet;
import java.awt.Label;
import java.awt.TextField;
import java.awt.Toolkit;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;

/**
 * FieldEdit - an Applet to validate data as it's being entered.
 * 
 * Not very general: a 52 minute hack to show the mechanics of editing.
 * 
 * Does try to leave the cursor in exactly the right position.
 * 
 * @author Ian Darwin, http://www.darwinsys.com/
 * @author Bjorn Gudehus, gothic@celestica.com
 */
public class FieldEdit extends Applet {
  /** The label to display the type of thing we're editing */
  private Label myLabel;

  /** The textfield to enter */
  private TextField textField;

  /** Init() is an Applet method used to set up the GUI and listeners */
  public void init() {
    add(myLabel = new Label("Hex:"));
    add(textField = new TextField(10));
    textField.addTextListener(new TextListener() {
      public void textValueChanged(TextEvent ev) {
        int caret = -1;
        TextField tf = FieldEdit.this.textField;
        String s = tf.getText();
        StringBuffer sb = new StringBuffer();
        System.out.println("Text->" + s);
        for (int i = 0; i < s.length(); i++) {
          char c = s.charAt(i);
          if (Character.digit(c, 16) >= 0)
            sb.append(c);
          else
            caret = tf.getCaretPosition() - 1;
        }
        if (caret >= 0) {
          tf.setText(sb.toString());
          tf.setCaretPosition(caret);
          Toolkit.getDefaultToolkit().beep();
        }
      }
    });
  }
}

           
         
    
    
    
  








Related examples in the same category

1.Make a Text Field two columns wide
2.Water mark text field
3.Auto complete TextField
4.Text fields and Java eventsText fields and Java events
5.JTextField Alignment SampleJTextField Alignment Sample
6.Create the textfieldCreate the textfield
7.Textfield only accepts numbersTextfield only accepts numbers
8.Overwritable TextFieldOverwritable TextField
9.Numeric TextFieldNumeric TextField
10.Passive TextField 1Passive TextField 1
11.Passive TextField 2Passive TextField 2
12.Text Accelerator ExampleText Accelerator Example
13.TextField Look Ahead ExampleTextField Look Ahead Example
14.Passive TextField 3Passive TextField 3
15.Non Wrapping(Wrap) TextPaneNon Wrapping(Wrap) TextPane
16.EditabilityExampleEditabilityExample
17.Bounded TextFieldBounded TextField
18.TextField ElementsTextField Elements
19.TextFieldViews 2TextFieldViews 2
20.TextField with ConstaintsTextField with Constaints
21.JTextField Sample 2JTextField Sample 2
22.JTextField Verifier SampleJTextField Verifier Sample
23.A simple label for field form panelA simple label for field form panel
24.A hack to make a JTextField really 2 columns wideA hack to make a JTextField really 2 columns wide
25.Limit JTextField input to a maximum length
26.Make sure that my JTextField has the focus when a JFrame is created
27.Make the ENTER key act like the TAB key
28.Setting up a textfield and modifying its horizontal alignment at runtimeSetting up a textfield and modifying its horizontal alignment at runtime
29.Aligning the Text in a JTextField Component
30.Based on JTextField content, enable or disable a JButton
31.Cut, paste, and copy in a JTextField under program control.
32.Add key listener event handler to JTextField
33.Right justified JTextfield content
34.Set the focus on a particular JTextField
35.Associate JLabel component with a JTextField
36.Right justified JTextField contents
37.Validate a value on the lostFocus event
38.Modify horizontal alignment of text field at runtime
39.Make sure that my Text field has the focus when a JFrame is created
40.Firing Item Events
41.extends JTextField to create integer JTextField
42.JTextField Max Length
43.Demo for three types of text component: JTextField, JPasswordField, JTextArea