java - JTextField 上的两个 KeyListener

标签 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();
     }
  });

最佳答案

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

  • 在同一个组件上使用多个监听器是否是一种好的做法,通常是的。
  • 将一次性监听器与组件一起使用是否是一种好的做法,是的。
  • 拥有一位忠实的倾听者是不是一种好的做法,恕我直言,不是。原因是,您想要创建小型工作单元来执行单一的、孤立的工作。当然,您也许能够抽象一个允许您重用的监听器,但是拥有一个单一的整体监听器只是一场维护噩梦

大多数监听器接口(interface)往往都有“适配器”类,它们只是监听器接口(interface)的具体实现,没有任何功能,因此您可以选择您实际想要使用的方法

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

相关文章:

java - org.openqa.selenium.remote.UnreachableBrowserException 如何定义EXE路径?

java - 为什么 nsIScriptableInputStream 不工作?

java - 如何自动连接指定SSID的WiFi?

java - 可以用 Swing Timer 以更优雅的方式完成吗?

java - JTextField 突然变小了

Java - 文本字段中的字符串输入 - 搜索数组列表 - 包括部分匹配

java - Spring重定向请求映射

java - 面板背景图片截图

java - MVC使用swing,如何让模型请求用户输入?

java - JTextField 中的数字数组 - Java