在我下面的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
类。如果你不知道如何使用它,这里有一个来自文档的方便链接,你可以使用。https:/docs.oracle.comjavasetutorialuiswingeventskeylistener.html。.
但简单地说,一个 KeyListener
是一个接口,你必须指定一些方法,但在你的情况下,我认为你唯一需要的方法是 keyPressed(KeyEvent e)
(这就叫按)。如果你对其他的感兴趣。keyReleased(KeyEvent e)
是当一个键被释放时,而 keyType(KeyEvent e)
是当它被按下并迅速释放。然后,使用 JFrames
addKeyListener(KeyListener k)
来添加您的自定义动作监听器。
做完这些后,你可以使用 JTextArea
's setText()
和 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");
}
});