Mapeando ações através de keystrokes
Esta dica de Java ilustra um método de mapear ações com keystrokes.
Mapeando ações através de keystrokes
import javax.swing.*;<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.swing.text.*;</SPAN><B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.util.Hashtable;</SPAN><B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.awt.event.*;</SPAN><B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.awt.BorderLayout;</SPAN><B><SPAN lang=EN-US >public class </SPAN></B><SPAN lang=EN-US >KeymapExample {</SPAN><SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public static void </SPAN></B><SPAN lang=EN-US >main(String[] args) {</SPAN><SPAN lang=EN-US >JTextArea area = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >JTextArea(</SPAN><SPAN lang=EN-US >6</SPAN><SPAN lang=EN-US >, </SPAN><SPAN lang=EN-US >32</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >Keymap parent = area.getKeymap();</SPAN><SPAN lang=EN-US >Keymap newmap = JTextComponent.addKeymap(</SPAN><SPAN lang=EN-US >"KeymapExampleMap"</SPAN><SPAN lang=EN-US >, parent);</SPAN><SPAN lang=EN-US >// CTRL-U: muda a palavra para upper case</SPAN><SPAN lang=EN-US >KeyStroke u = KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK);</SPAN><SPAN lang=EN-US >Action actionU = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >UpWord(); </SPAN><SPAN lang=EN-US >newmap.addActionForKeyStroke(u, actionU);</SPAN><SPAN lang=EN-US >Action actionList[] = area.getActions();</SPAN><SPAN lang=EN-US >Hashtable lookup = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Hashtable();</SPAN><B><SPAN lang=EN-US >for </SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >j=</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >; j < actionList.length; j+=</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >)</SPAN><SPAN lang=EN-US >lookup.put(actionList[j].getValue(Action.NAME), actionList[j]);</SPAN><SPAN lang=EN-US >// CTRL-L: seleciona toda a linha</SPAN><SPAN lang=EN-US >KeyStroke L = KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_MASK);</SPAN><SPAN lang=EN-US >Action actionL = (Action)lookup.get(DefaultEditorKit.selectLineAction);</SPAN><SPAN lang=EN-US >newmap.addActionForKeyStroke(L, actionL);</SPAN><SPAN lang=EN-US >// CTRL-W: seleciona a palavra próxima do cursor</SPAN><SPAN lang=EN-US >KeyStroke W = KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_MASK);</SPAN><SPAN lang=EN-US >Action actionW = (Action)lookup.get(DefaultEditorKit.selectWordAction);</SPAN><SPAN lang=EN-US >newmap.addActionForKeyStroke(W, actionW);</SPAN><SPAN lang=EN-US >area.setKeymap(newmap);</SPAN><SPAN lang=EN-US >JFrame f = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >JFrame(</SPAN><SPAN lang=EN-US >"KeymapExample"</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</SPAN><SPAN lang=EN-US >f.getContentPane().add(</SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >JScrollPane(area), BorderLayout.CENTER);</SPAN><SPAN lang=EN-US >area.setText(</SPAN><SPAN lang=EN-US >"This is the story\nof the hare who\nlost his spectacles."</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >f.pack();</SPAN><SPAN lang=EN-US >f.setVisible(</SPAN><B><SPAN lang=EN-US >true</SPAN></B><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US > </SPAN><B><SPAN lang=EN-US >public static class </SPAN></B><SPAN lang=EN-US >UpWord </SPAN><B><SPAN lang=EN-US >extends </SPAN></B><SPAN lang=EN-US >TextAction {</SPAN><B><SPAN lang=EN-US >public </SPAN></B><SPAN lang=EN-US >UpWord() {</SPAN><B><SPAN lang=EN-US >super</SPAN></B><SPAN lang=EN-US >(</SPAN><SPAN lang=EN-US >"uppercase-word-action"</SPAN><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >}</SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >actionPerformed(ActionEvent e) {</SPAN> <SPAN lang=EN-US >JTextComponent comp = getTextComponent(e);</SPAN><B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(comp == </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >) </SPAN><B><SPAN lang=EN-US >return</SPAN></B><SPAN lang=EN-US >;</SPAN><SPAN lang=EN-US >Document doc = comp.getDocument();</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >start = comp.getSelectionStart();</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >end = comp.getSelectionEnd();</SPAN><B><SPAN lang=EN-US >try </SPAN></B><SPAN lang=EN-US >{</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >left = javax.swing.text.Utilities.getWordStart(comp, start);</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >right = javax.swing.text.Utilities.getWordEnd(comp, end);</SPAN><SPAN lang=EN-US >String word = doc.getText(left, right-left);</SPAN><SPAN lang=EN-US >doc.remove(left, right-left);</SPAN><SPAN lang=EN-US >doc.insertString(left, word.toUpperCase(), </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >);</SPAN><SPAN lang=EN-US >comp.setSelectionStart(start); </SPAN> <SPAN lang=EN-US >comp.setSelectionEnd(end);</SPAN><SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(BadLocationException ble) { </SPAN><B><SPAN lang=EN-US >return</SPAN></B><SPAN lang=EN-US >; }</SPAN><SPAN lang=EN-US >}</SPAN><SPAN lang=EN-US > </SPAN><SPAN lang=EN-US >} </SPAN> <SPAN lang=EN-US >}</SPAN>
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo