this question的注释和this question的答案中提到应使用documentListenerdocumentFilter而不是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)JTextFieldactionPerformed(ActionEvent ae)获取JButton的文本输入。

我的问题是,应该使用documentListener / documentFilter而不是keyListener,为什么或为什么不呢?

最佳答案

KeyListener -您几乎永远不要将其与文本组件一起使用,因为它是低级构造,并且可能使文本组件的功能混乱。
DocumentListener-如果您不打算过滤输入,请使用它-如果您要接受所有显示的输入,但只想跟踪输入。
DocumentFilter-如果要在显示之前过滤输入内容,请使用。


我本人会使用DocumentFilter,因为这样可以忽略非字母输入。我也支持Kevin提到的所有观点。他的答案加1+。

关于java - DocumentListener或KeyListener,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29830788/

10-12 04:03