A TextField that uses key events to correct the spelling of the names of computer languages entered into it

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

/** A spelling-correcting TextField for entering
 *  a language name.
 *  


 *******************

public class LanguageField extends TextField {
  private String[] substrings =
    { "", "J", "Ja", "Jav", "Java" };

  public LanguageField() {
    addKeyListener(new SpellingCorrector());
    addActionListener(new WordCompleter());
    addFocusListener(new SubliminalAdvertiser());
  }

  // Put caret at end of field.
  
  private void setCaret() {
    setCaretPosition(5);
  }
  
  // Listener to monitor/correct spelling as user types.
  
  private class SpellingCorrector extends KeyAdapter {
    public void keyTyped(KeyEvent event) {
      setLanguage();
      setCaret();
    }

    // Enter partial name of good programming language that
    // most closely matches what they've typed so far.
    
    private void setLanguage() {
      int length = getText().length();
      if (length <= 4) {
        setText(substrings[length]);
      } else {
        setText("Java");
      }
      setCaret();
    }
  }

  // Listener to replace current partial name with
  // most closely-matching name of good language.
  
  private class WordCompleter implements ActionListener {

    // When they hit RETURN, fill in the right answer.
    
    public void actionPerformed(ActionEvent event) {
      setText("Java");
      setCaret();
    }
  }

  // Listener to give the user a hint.
  
  private class SubliminalAdvertiser extends FocusAdapter {
    public void focusGained(FocusEvent event) {
      String text = getText();
      for(int i=0; i<10; i++) {
        setText("Hint: Java");
        setText(text);
      }
    }
  }
}

Permanent link to this article: http://bangla.sitestree.com/a-textfield-that-uses-key-events-to-correct-the-spelling-of-the-names-of-computer-languages-entered-into-it/

Leave a Reply