javaswing中的退格处理
我有如下处理用户输入的Java Swing代码:javaswing中的退格处理,java,swing,backspace,Java,Swing,Backspace,我有如下处理用户输入的Java Swing代码: public class UserEntryPane extends JPanel implements DocumentListener { … @Override public void insertUpdate(DocumentEvent e) { try { String c = a.getText(...); if (c.equals("\n")) { System.o
public class UserEntryPane extends JPanel implements DocumentListener {
…
@Override
public void insertUpdate(DocumentEvent e) {
try {
String c = a.getText(...);
if (c.equals("\n")) {
System.out.println(...);
...
}
else {
...
}
} catch (Exception e) {
e.printStackTrace();
}
}
问题是当按下Backspace时不会调用此方法。如何检测用户的退格以正确处理它?似乎您使用了
DocumentListener
看看这个方法。当您使用退格时,它会调用
@Override
public void removeUpdate(DocumentEvent arg0) {
}
那是秋千吗?看起来像是标准的命令行java,你可以不设置一个键侦听器并监听backspace键吗?我认为退格键的字符代码是8。@BenjaminDale这不是正确的方法!他必须使用DocumentListener或DocumentFilter。是的,我刚看到你的答案。对我来说似乎是合理的:D
import java.awt.FlowLayout;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class UseBackSPace extends JFrame
{
Robot r;
void start()
{
try
{
JFrame f = new JFrame("UseBackSPace");
JTextField txt = new JTextField(20);
f.add(txt);
f.setSize(500, 200);
f.setVisible(true);
f.setLayout(new FlowLayout());
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
// f.setLocation(400, 400);
r = new Robot();
r.setAutoDelay(900);
r.keyPress(KeyEvent.VK_T);
r.keyPress(KeyEvent.VK_H);
r.keyPress(KeyEvent.VK_I);
r.keyPress(KeyEvent.VK_S);
r.keyPress(KeyEvent.VK_SPACE);
r.keyPress(KeyEvent.VK_I);
r.keyPress(KeyEvent.VK_S);
r.keyPress(KeyEvent.VK_SPACE);
r.keyPress(KeyEvent.VK_F);
r.keyPress(KeyEvent.VK_U);
r.keyPress(KeyEvent.VK_N);
r.keyPress(KeyEvent.VK_BACK_SPACE);
} catch (Exception e)
{
}
}
public static void main(String args[])
{
new UseBackSPace().start();
}
}