java - swing:一段代码的优化。
怪我咯
怪我咯 2017-04-17 13:10:11
0
1
230

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

        }
    });
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(1)
小葫芦

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!