当输入被击中添加字符串到行尾
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)
添加自定义动作侦听器。
完成后,您可以使用 JTextArea
的 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");
}
});
在我下面的 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)
添加自定义动作侦听器。
完成后,您可以使用 JTextArea
的 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");
}
});