在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
,为什么或为什么不呢? 最佳答案
KeyListener -您几乎永远不要将其与文本组件一起使用,因为它是低级构造,并且可能使文本组件的功能混乱。
DocumentListener-如果您不打算过滤输入,请使用它-如果您要接受所有显示的输入,但只想跟踪输入。
DocumentFilter-如果要在显示之前过滤输入内容,请使用。
我本人会使用DocumentFilter,因为这样可以忽略非字母输入。我也支持Kevin提到的所有观点。他的答案加1+。
关于java - DocumentListener或KeyListener,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29830788/