当输入被击中添加字符串到行尾

when enter is hit add string to the end of the line

在我下面的 java 代码中,它生成了一个带有 jtextrea 的框架。这允许进行简单的文本处理。我只想添加“Sam”。这是 5 个空格,最后是 sam。每次用户点击回车。您还可以看到我在下面添加的 gif,这正是我要找的。

import java.awt.event.*; 
import java.awt.*; 
import javax.swing.*; 
class text11 extends JFrame implements ActionListener { 



    // JFrame 
    static JFrame f; 



    // text area 
    static JTextArea jt; 

    // main class 
    public static void main(String[] args) 
    { 
        // create a new frame to store text field and button 
        f = new JFrame("textfield"); 

        // create a label to display text 




        // create a object of the text class 
        text11 te = new text11(); 



        // create a text area, specifying the rows and columns 
        jt = new JTextArea(" ", 20, 20); 

        JPanel p = new JPanel(); 

        // add the text area and button to panel 
        p.add(jt); 

        f.add(p); 
        // set the size of frame 
        f.setSize(300, 300); 

        f.show(); 
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub

    } 

} 

要获得输入以便知道何时使用输入,您必须创建自己的 KeyListener class。如果您不知道如何使用它,可以使用文档中的一个方便的 link:https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

但简单地说,KeyListener 是一个接口,您必须在其中指定一些方法,但在您的情况下,我认为您唯一需要的是 keyPressed(KeyEvent e)(称为 pressed) .如果您对其他的感兴趣,keyReleased(KeyEvent e) 是释放键的时间,keyType(KeyEvent e) 是快速按下和释放键的时间。然后,使用 JFrames addKeyListener(KeyListener k) 添加自定义动作侦听器。

完成后,您可以使用 JTextAreasetText()getText() 方法将“sam”附加到末尾(5 个空格被堆栈溢出切断,我知道你想要 5 个空格)。

@Override
public void keyPressed(KeyEvent e) {
    if(e.getKeyCode() == KeyEvent.VK_ESCAPE) {
        jt.setText(jt.getText() + "     sam");
    }
}

如果你添加的 KeyListener 正确,你应该没问题!

    String actionKey = "ADD_SAM";
    InputMap inputMap = jt.getInputMap(JComponent.WHEN_FOCUSED);
    KeyStroke enterPressed = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
    inputMap.put(enterPressed, actionKey);
    jt.getActionMap().put(actionKey, new TextAction(actionKey) {
        @Override
        public void actionPerformed(ActionEvent e) {
            jt.append(" Sam\n");
        }
    });