Mega Code Archive

 
Categories / Java / Swing JFC
 

Creating a Custom Editing Command for a JTextComponent

import java.awt.event.ActionEvent; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.KeyStroke; import javax.swing.text.Document; import javax.swing.text.JTextComponent; import javax.swing.text.TextAction; public class Main {   public static void main(String[] argv) throws Exception {     JTextArea comp = new JTextArea();     String actionName = "Lowercase";          JFrame f = new JFrame();     f.add(new JScrollPane(comp));     f.setSize(300,300);     f.setVisible(true);     comp.getInputMap().put(KeyStroke.getKeyStroke("F2"), actionName);     comp.getActionMap().put(actionName, new TextAction(actionName) {       public void actionPerformed(ActionEvent evt) {         JTextComponent comp = getTextComponent(evt);         if (comp.getSelectionStart() == comp.getSelectionEnd()) {           if (comp.getCaretPosition() < comp.getDocument().getLength()) {             try {               int pos = comp.getCaretPosition();               Document doc = comp.getDocument();               String str = doc.getText(pos, 1).toLowerCase();               doc.remove(pos, 1);               doc.insertString(pos, str, null);               comp.moveCaretPosition(pos + 1);             } catch (Exception e) {               System.out.println();             }           }         } else {           int s = comp.getSelectionStart();           int e = comp.getSelectionEnd();           comp.replaceSelection(comp.getSelectedText().toLowerCase());           comp.select(s, e);         }       }     });   } }