Map actions with keystrokes : Key Event « Event « Java






Map actions with keystrokes

    
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.util.Hashtable;

import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.text.DefaultEditorKit;
import javax.swing.text.Document;
import javax.swing.text.JTextComponent;
import javax.swing.text.Keymap;
import javax.swing.text.TextAction;
import javax.swing.text.Utilities;

public class Main {
  public static void main(String[] args) {
    JTextArea area = new JTextArea(6, 32);
    Keymap parent = area.getKeymap();
    Keymap newmap = JTextComponent.addKeymap("KeymapExampleMap", parent);

    KeyStroke u = KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK);
    Action actionU = new UppercaseAction();
    newmap.addActionForKeyStroke(u, actionU);

    Action actionList[] = area.getActions();
    Hashtable lookup = new Hashtable();
    for (int j = 0; j < actionList.length; j += 1)
      lookup.put(actionList[j].getValue(Action.NAME), actionList[j]);

    KeyStroke L = KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_MASK);
    Action actionL = (Action) lookup.get(DefaultEditorKit.selectLineAction);
    newmap.addActionForKeyStroke(L, actionL);

    area.setKeymap(newmap);

    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.add(new JScrollPane(area), BorderLayout.CENTER);
    area.setText("this is a test");
    f.setSize(300,300);
    f.setVisible(true);
  }

}

class UppercaseAction extends TextAction {
  public UppercaseAction() {
    super("uppercase-word-action");
  }

  public void actionPerformed(ActionEvent e) {
    JTextComponent comp = getTextComponent(e);
    if (comp == null)
      return;
    Document doc = comp.getDocument();
    int start = comp.getSelectionStart();
    int end = comp.getSelectionEnd();
    try {
      int left = Utilities.getWordStart(comp, start);
      int right = Utilities.getWordEnd(comp, end);
      String word = doc.getText(left, right - left);
      doc.remove(left, right - left);
      doc.insertString(left, word.toUpperCase(), null);
      comp.setSelectionStart(start); 
      comp.setSelectionEnd(end);
    } catch (Exception ble) {
      return;
    }
  }
}

   
    
    
    
  








Related examples in the same category

1.KeyListener, ActionListener Demo 1KeyListener, ActionListener Demo 1
2.KeyListener, ActionListener Demo 2KeyListener, ActionListener Demo 2
3.Key event on frameKey event on frame
4.Responding to KeystrokesResponding to Keystrokes
5.Key Event DemoKey Event Demo
6.Set java.awt.Container.getFocusTraversalKeys(int id)
7.KeyStroke.getKeyStroke("F2")
8.Activating a Keystroke When Any Component in the Window Has Focus
9.InputMap javax.swing.JComponent.getInputMap(int condition)
10.Activating a Keystroke When Any Child Component Has Focus
11.Listening to All Key Events Before Delivery to Focused Component
12.List keystrokes in the WHEN_ANCESTOR_OF_FOCUSED_COMPONENT input map of the component
13.List keystrokes in the WHEN_IN_FOCUSED_WINDOW input map of the component
14.Converting a KeyStroke to a String
15.Creating a KeyStroke and Binding It to an Action
16.void InputMap.put(KeyStroke keyStroke, Object actionMapKey)
17.Handling Key Presses
18.Get key pressed as a key character (which is a Unicode character)
19.Get key pressed as a key code
20.Get Key Text
21.KeyStroke to String
22.Construct a new key description from a given universal string descriptionConstruct a new key description from a given universal string description
23.Reads for modifiers and creates integer with required mask