Java 创建扩展keyListener的类

Java 创建扩展keyListener的类,java,swing,overriding,listener,extends,Java,Swing,Overriding,Listener,Extends,在我的java项目中,我想在几个不同的类中检查每个JTextField中的输入(使用完全相同的代码) 现在我一遍又一遍地复制相同的代码,有人建议我有两个选项: 创建一个方法并调用该方法 创建一个新类,该类从另一个具有所需方法的类(我还不知道是哪个)扩展而来 我现在使用的代码是: totalAmount.addKeyListener(new KeyAdapter() { @Override public void keyTyped(KeyEvent arg0) { //do som

在我的java项目中,我想在几个不同的类中检查每个JTextField中的输入(使用完全相同的代码)

现在我一遍又一遍地复制相同的代码,有人建议我有两个选项:

  • 创建一个方法并调用该方法

  • 创建一个新类,该类从另一个具有所需方法的类(我还不知道是哪个)扩展而来

  • 我现在使用的代码是:

    totalAmount.addKeyListener(new KeyAdapter() {
    @Override
        public void keyTyped(KeyEvent arg0) {
        //do something
        }
    });
    
    新课程是:

    public class Listener extends KeyAdapter {
        public void keyTyped(KeyEvent arg0){
        //do something
        }
    }
    
    问题是我不知道我是否扩展了正确的类,以及如何使用我编写的新类


    提前谢谢

    要使用密钥适配器执行所需操作,请使用

    totalAmount.addKeyListener(new Listener());
    
    您的密钥适配器的代码是正确的

    public class Listener extends KeyAdapter {
        public void keyTyped(KeyEvent arg0){
            //do something
        }
    }
    
    要从
    JTextField
    获取文本,您可以在
    keyAdapter

    System.out.println(totalAmount);
    
    或者,最好使用文档侦听器。这将由

    public class documentListener implements DocumentListener //This is a listener
    {
        public void changedUpdate(DocumentEvent e){
    
        }
    
        public void removeUpdate(DocumentEvent e){
            int lengthMe = e.getDocument().getLength();
            System.out.println(e.getDocument().getText(0,lengthMe));
        }
    
        public void insertUpdate(DocumentEvent e){
            int lengthMe = e.getDocument().getLength();
            System.out.println(e.getDocument().getText(0,lengthMe));
        }
    }
    
    它将被添加到
    JTextField

    totalAmount.getDocument().addDocumentListener(new documentListener());
    

    要使用密钥适配器执行所需的操作,请使用

    totalAmount.addKeyListener(new Listener());
    
    您的密钥适配器的代码是正确的

    public class Listener extends KeyAdapter {
        public void keyTyped(KeyEvent arg0){
            //do something
        }
    }
    
    要从
    JTextField
    获取文本,您可以在
    keyAdapter

    System.out.println(totalAmount);
    
    或者,最好使用文档侦听器。这将由

    public class documentListener implements DocumentListener //This is a listener
    {
        public void changedUpdate(DocumentEvent e){
    
        }
    
        public void removeUpdate(DocumentEvent e){
            int lengthMe = e.getDocument().getLength();
            System.out.println(e.getDocument().getText(0,lengthMe));
        }
    
        public void insertUpdate(DocumentEvent e){
            int lengthMe = e.getDocument().getLength();
            System.out.println(e.getDocument().getText(0,lengthMe));
        }
    }
    
    它将被添加到
    JTextField

    totalAmount.getDocument().addDocumentListener(new documentListener());
    

    1) 在您的例子中,
    totalAmount.addKeyListener(instanceOfYourListener)2)但您应该使用来检查
    JTextField
    中的更改,而不是
    KeyListener
    .1)totalAmount.addKeyListener(new Listener(){keyTyped(arg0);}?它不起作用…2)我正在尝试检查用户键入的每个键,这是eclipse给我的。。。现在我的代码正在运行,我只需要每次都复制它…一种方法是执行
    totalAmount.addKeyListener(newListener())。但是,您也只能对所有文本字段使用侦听器的一个实例。@我添加了一个答案。我希望有帮助。如果你觉得它足够正确,你可以用答案旁边的勾号接受它并投票。但如果是错误的,请告诉我:)这似乎是我一直在寻找的解决方案,谢谢!老实说,我没有听懂最后一句话。然而,如果你的意思是我不能在我的文本字段中使用其他侦听器类型,那么现在我看不出需要它的原因。虽然如果有另一个选项,而不是为每个侦听器创建另一个类,这将是一件好事……1)在您的示例中,
    totalAmount.addKeyListener(instanceOfYourListener)2)但您应该使用来检查
    JTextField
    中的更改,而不是
    KeyListener
    .1)totalAmount.addKeyListener(new Listener(){keyTyped(arg0);}?它不起作用…2)我正在尝试检查用户键入的每个键,这是eclipse给我的。。。现在我的代码正在运行,我只需要每次都复制它…一种方法是执行
    totalAmount.addKeyListener(newListener())。但是,您也只能对所有文本字段使用侦听器的一个实例。@我添加了一个答案。我希望有帮助。如果你觉得它足够正确,你可以用答案旁边的勾号接受它并投票。但如果是错误的,请告诉我:)这似乎是我一直在寻找的解决方案,谢谢!老实说,我没有听懂最后一句话。然而,如果你的意思是我不能在我的文本字段中使用其他侦听器类型,那么现在我看不出需要它的原因。虽然如果有另一个选项,而不是为每个侦听器创建另一个类,这将是很好的…1+赞成票“最好您可以使用DocumentListener”。OP实际上不应该向JTextField添加KeyListener,因为这可能会以错误和意外的方式改变文本字段的本机行为。我不确定他在听哪个键,但如果是回车键,那么最好的解决方案是在JTextField中添加一个ActionListener。1+以上的投票支持“最好使用DocumentListener”。OP实际上不应该向JTextField添加KeyListener,因为这可能会以错误和意外的方式改变文本字段的本机行为。我不确定他在监听哪个键,但如果是enter键,那么最好的解决方案是向JTextField添加ActionListener。