this question的评论和this question的回答中都提到,应该使用documentListener或documentFilter,而不是keyListener。为什么会这样呢?
在一款简单的Hangman游戏中,我前几天写了一些代码,如下所示:
public class Hangman extends JFrame implements KeyListener, ActionListener{
private JTextField guess;
private JButton b1;
private void addComponentsToPane(){
b1 = new JButton("New Game");
b1.addActionListener(this);
guess = new JTextField(2);
guess.addKeyListener(this);在后面的代码中,我使用keyTyped(KeyEvent ke)从JTextField和actionPerformed(ActionEvent ae)获得JButton的文本输入。
我的问题是,应该使用documentListener/documentFilter而不是keyListener,为什么或为什么不使用
发布于 2015-04-23 17:55:30
我自己也会使用DocumentFilter,因为这样我就可以忽略非字母输入。我也支持凯文提到的一切。1+回答他的问题。
发布于 2015-04-23 17:50:14
我将回答一个问题:如果您在使用鼠标中间按钮作为“粘贴”命令的系统上运行程序,会发生什么情况?例如,有些版本的Linux可以做到这一点。
在这种情况下,用户可以将文本粘贴到JTextField中,而您的程序将不会检测到它。
这里有很多这样的情况,所以尽管您的KeyListener大部分时间都能工作,但是您不应该依赖它来获取重要的东西--否则会有一群困惑和烦人的用户。
https://stackoverflow.com/questions/29830788
复制相似问题