开发者社区> 问答> 正文

swing代码的优化。

如下代码给一个表格(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) {
        }
    });

展开
收起
蛮大人123 2016-02-28 15:50:09 1938 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

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

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

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

    2019-07-17 18:49:41
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载