Swing JFC Java

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);
        }
      }
    });
  }
}