e1002. creating a custom editing command for a jtextcomponent.txt

来自「这里面包含了一百多个JAVA源文件」· 文本 代码 · 共 47 行

TXT
47
字号
This example demonstrates how to implement an editing command. There are two steps when creating a custom command. The first is to create an action object that executes the desired functionality and then installs the action object in the component. The second is to bind a keystroke to the action object using an inputmap. 
Text component actions should extend from TextAction. TextAction has a convenience method for finding the appropriate text component on which to operate. 

This example implements a Lowercase command that converts characters to lowercase. If the selection is empty, the command converts the character following the caret and then moves the caret forward one space. If the selection is not empty, the command converts the characters in the selection. 

    JTextArea comp = new JTextArea();
    
    // Bind F2 to the lowercase action
    String actionName = "Lowercase";
    comp.getInputMap().put(KeyStroke.getKeyStroke("F2"), actionName);
    
    // Install the action
    comp.getActionMap().put(actionName,
        new TextAction(actionName) {
            public void actionPerformed(ActionEvent evt) {
                lowercaseSelection(getTextComponent(evt));
            }
        }
    );
    
    public static void lowercaseSelection(JTextComponent comp) {
        if (comp.getSelectionStart() == comp.getSelectionEnd()) {
            // There is no selection, only a caret
            if (comp.getCaretPosition() < comp.getDocument().getLength()) {
                // The caret must be at least one position left of the end
                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 (BadLocationException e) {
                }
            }
        } else {
            // There is a selection
            int s = comp.getSelectionStart();
            int e = comp.getSelectionEnd();
    
            comp.replaceSelection(comp.getSelectedText().toLowerCase());
            comp.select(s, e);
        }
    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?