JTextField上的两个KeyListener

时间:2016-01-08 07:24:23

标签: java swing jtextfield keylistener

在不同的代码部分为JComponent添加少量侦听器是一个好习惯吗?我应该创建一个更大的听众吗?

例如,我有JTextField,我注意到两个KeyListener都被调用。

 JTextField textField = new JTextField();
  textField.addKeyListener(new KeyListener()
  {
     @Override
     public void keyTyped(KeyEvent e)
     {

     }

     @Override
     public void keyPressed(KeyEvent e)
     {

     }

     @Override
     public void keyReleased(KeyEvent e)
     {
        something();
     }
  });

  textField.addKeyListener(new KeyListener()
  {
     @Override
     public void keyTyped(KeyEvent e)
     {

     }

     @Override
     public void keyPressed(KeyEvent e)
     {

     }

     @Override
     public void keyReleased(KeyEvent e)
     {
        somethingElse();
     }
  });

1 个答案:

答案 0 :(得分:2)

嗯,使用KeyListener(通常,但特别是)文本组件是不好的做法。

  • 在同一组件上使用多个侦听器是一种好习惯,通常是。
  • 将单用侦听器与组件一起使用是一种好习惯,是的。
  • 有一个大听众,恕我直言,不是。原因是,您希望创建一小部分工作来完成单个独立的工作。当然你可能能够抽象一个允许你重复使用的监听器,但拥有一个单一的整体监听器只是一个维护噩梦

大多数监听器接口都倾向于使用" adapter" class,它只是没有任何功能的侦听器接口的具体实现,所以你可以选择你真正想要使用的方法