🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.jbuilder.java.api
Article #3084

TextField - How to?

#3084
From: Art Smith
Date: Mon, 27 Apr 1998 00:00
78 lines
2768 bytes
Hi,

I'm trying to develop a class which extends TextField and impliments a
keyPressed method which only accepts "integer" characters (0-9).
What I can't figure out is how to disable the TextFields default echo.
i.e. If the character 'a' is typed I don't want echoed back to the
display.
Is there a standard method for trapping events so it won't get passed
along?

Below is my code so far. It isn't fancy.

Any help would be appreciated.

Art


//
// TextFieldClass which only accepts "integer" characters.
//

package ExperimentalDesign;

import java.awt.*;
import java.awt.event.*;

public class IntegerOnlyTextField extends TextField{

  public IntegerOnlyTextField() {
    super();
    this.addKeyListener(new IntKey());
  }

  class IntKey extends java.awt.event.KeyAdapter {

    public void keyPressed(java.awt.event.KeyEvent keyEvent) {
      Object obj = keyEvent.getSource();
      if (obj == IntegerOnlyTextField.this) {
        IntegerOnlyTextField_keyPressed(keyEvent);
        }
    }
  }

  void IntegerOnlyTextField_keyPressed(java.awt.event.KeyEvent keyEvent)
{

    char          zero                    = 0x30;
    char          nine                    = 0x39;
    char          charKeyCode      = keyEvent.getKeyChar();
    int           length                   = this.getText().length();
    int           cursorPosition     = 0;
    StringBuffer  contents       = new StringBuffer();
    StringBuffer  temp             = new StringBuffer(this.getText());

    System.out.println("KeyPressed: length = " + length + " Cursor: " +
cursorPosition +
                       " temp: " + temp.toString() + " Keypressed: " +
charKeyCode);

    // Strip off the current character.
    for(int i = 0; i <= length-2; i++) {
      contents.append(temp.charAt(i));
    }
    // Put it back on if it's good.
      if((charKeyCode >= zero) && (charKeyCode <= nine)) {
        contents.append(charKeyCode);
        System.out.println("contents: " + contents.toString());
      }

    this.setColumns(contents.length());
    this.setText(contents.toString());

    if(cursorPosition < 0) cursorPosition = 0;
    this.setCaretPosition(cursorPosition);
  }

} // End class IntegerOnlyTextField.
Technical Details
Message-ID: <3544F974.A46C8412@stat.ufl.edu>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: 1089d0,9ebd2b4613535c20,start
X-Google-Attributes: gid1089d0,public
From: Art Smith <arcs@stat.ufl.edu>
Subject: TextField - How to?
Date: 1998/04/27
Message-ID: <3544F974.A46C8412@stat.ufl.edu>
X-Deja-AN: 348210851
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0
Reply-To: arcs@stat.ufl.edu
Content-Type: text/plain; charset=us-ascii
Organization: University of Florida
Newsgroups: borland.public.jbuilder.java.api