JTextArea new line on shift + enter

后端 未结 3 1713
南笙
南笙 2021-02-08 23:31

I\'ve added a keylistener to my JTextArea field, but it doesn\'t behave as I expected.

inputTextArea.addKeyListener(new KeyAdapter() {
public void keyPressed(Key         


        
3条回答
  •  逝去的感伤
    2021-02-08 23:45

    You may use the InputMap and ActionMap of the JTextArea to map the key strokes to actions:

    private static final String TEXT_SUBMIT = "text-submit";
    private static final String INSERT_BREAK = "insert-break";
    ...
    private void initialize() {
        InputMap input = inputTextArea.getInputMap();
        KeyStroke enter = KeyStroke.getKeyStroke("ENTER");
        KeyStroke shiftEnter = KeyStroke.getKeyStroke("shift ENTER");
        input.put(shiftEnter, INSERT_BREAK);  // input.get(enter)) = "insert-break"
        input.put(enter, TEXT_SUBMIT);
    
        ActionMap actions = inputTextArea.getActionMap();
        actions.put(TEXT_SUBMIT, new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                submitText();
            }
        });
    }
    ...
    private void submitText() {
        // TODO
    }  
    

    The original action for ENTER - "insert-break" - is used for shift ENTER.

提交回复
热议问题