Results 1 to 1 of 1
-
Showing how to add Actions for KeyStrokes
Java Code: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.BadLocationException; 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; public class KeymapExample { public static void main(String[] args) { // start with a simple JTextArea, get its Keymap to use as our parent, // and create a new map called "KeymapExampleMap" JTextArea area = new JTextArea(6, 32); Keymap parent = area.getKeymap(); Keymap newmap = JTextComponent.addKeymap("KeymapExampleMap", parent); // add CTRL-U: change current word to upper case (our own action) KeyStroke u = KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK); Action actionU = new UpWord(); // an inner class (defined below) newmap.addActionForKeyStroke(u, actionU); // get all the actions JTextArea provides for us Action actionList[] = area.getActions(); // put them in a Hashtable so we can retreive them by Action.NAME Hashtable lookup = new Hashtable(); for (int j = 0; j < actionList.length; j += 1) lookup.put(actionList[j].getValue(Action.NAME), actionList[j]); // add CTRL-L: select current line (action provided for us) KeyStroke L = KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_MASK); Action actionL = (Action) lookup.get(DefaultEditorKit.selectLineAction); newmap.addActionForKeyStroke(L, actionL); // add CTRL-W: select current word (action provided for us) KeyStroke W = KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_MASK); Action actionW = (Action) lookup.get(DefaultEditorKit.selectWordAction); newmap.addActionForKeyStroke(W, actionW); // set the JTextArea's Keymap to be our new map area.setKeymap(newmap); // show the TextPane JFrame f = new JFrame("KeymapExample"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER); area .setText("This is the story\nof the hare who\nlost his spectacles."); f.pack(); f.setVisible(true); } // begin inner class public static class UpWord extends TextAction { public UpWord() { super("uppercase-word-action"); } public void actionPerformed(ActionEvent e) { // change current word (or selected words) to upper case JTextComponent comp = getTextComponent(e); if (comp == null) return; Document doc = comp.getDocument(); int start = comp.getSelectionStart(); int end = comp.getSelectionEnd(); try { int left = javax.swing.text.Utilities.getWordStart(comp, start); int right = javax.swing.text.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); // restore previous // position/selection comp.setSelectionEnd(end); } catch (BadLocationException ble) { return; } } } // end inner class }"The sole cause of man’s unhappiness is that he does not know how to stay quietly in his room." - Blaise Pascal
Similar Threads
-
Help using Buttons/Actions with Drawings
By Deathmonger in forum New To JavaReplies: 0Last Post: 04-08-2008, 03:11 PM -
Actions
By alley in forum AWT / SwingReplies: 2Last Post: 01-16-2008, 02:52 PM -
Bean related actions in JSP
By Java Tip in forum Java TipReplies: 0Last Post: 12-24-2007, 10:04 AM -
Why isn't this showing?
By JToolTip in forum Java AppletsReplies: 2Last Post: 07-07-2007, 11:54 PM -
Maximum size permited in the parameters in actions and servlets
By Eric in forum Java ServletReplies: 2Last Post: 07-03-2007, 04:09 PM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks