swing:一段代码的优化。

发布于 2022-08-31 20:36:51 字数 634 浏览 21 评论 0

如下代码给一个表格(JTable)注册行双击事件,请问如何写得更加简单、可读?

  //注册表格事件
  table.addMouseListener(new MouseListener() {
        //鼠标双击事件
        @Override
        public void mouseClicked(MouseEvent e) {
            if (e.getClickCount() == 2) {
                .....//处理事件
            }
        }

        @Override
        public void mousePressed(MouseEvent e) {

        }

        @Override
        public void mouseReleased(MouseEvent e) {

        }

        @Override
        public void mouseEntered(MouseEvent e) {

        }

        @Override
        public void mouseExited(MouseEvent e) {

        }
    });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温馨耳语 2022-09-07 20:36:51

J2SE里面的很多GUI的Listener接口都有Adapter实现类,通过对Adapter的匿名类可以免去实现不必要方法的麻烦。
比如你的这个代码可以写成:

java  //注册表格事件
  table.addMouseListener(new MouseAdapter() {
        //鼠标双击事件
        @Override    // 不确定是否需要@Override, U try
        public void mouseClicked(MouseEvent e) {
            if (e.getClickCount() == 2) {
                .....//处理事件
            }
        }
    });

解释:xxListener属于接口,它定义了很多事件调用方法,如果你的类实现xxListener的话必须将它定义的这些事件方法都实现,不管你需不需要的事件统统得实现,至少得实现成空方法(接口就是这么任性)。而xxAdapter属于类,它实现了xxListener接口,只不过它的所有方法都做成了空方法,你从xxAdapter类继承出来的类就只需要重写一下你所需要的事件方法就行了,其它事件发生的话就自动调用xxAdapter的空方法了。

参考 http://www.766.com/doc/java/awt/event/MouseAdapter.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文