<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java軟件報表軟件技術博客

    java報表軟件技術匯總 java報表軟件制作 報表軟件新聞
    posts - 355, comments - 100, trackbacks - 0, articles - 3
       :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

    FineReport作為插件化開發的報表軟件,有些特殊需求的功能需要自己開發開發的插件包帆軟官方有提提供,可以去帆軟論壇上找本文將主要介紹如何開發一個自定義控件,這里講講方法論。

    第一步:實例化一個注冊控件的接口

    給四個信息 我們的控件類,界面類,圖標路徑,控件類型名字

    package com.hg.free.plugin.customcombo.param;

     

    import com.fr.design.designer.creator.XComboBox;

    import com.fr.design.fun.impl.AbstractParameterWidgetOptionProvider;

    import com.fr.form.ui.Widget;

     

    public class WidgetRegister extends AbstractParameterWidgetOptionProvider {

     

            @Override

            
    public Class<? extends Widget> classForWidget() {

                    
    return CustomComboBox.class;

            }


            

            @Override

            
    public Class<?> appearanceForWidget() {

                    
    return XComboBox.class;

            }


     

            @Override

            
    public String iconPathForWidget() {

                    
    return "/com/fr/web/images/combobox.png";

            }


     

            @Override

            
    public String nameForWidget() {

                    
    return "自定義下拉框";

            }


     

    }



    第二步,重寫控件類

    package com.hg.free.plugin.customcombo.param;

     

    import com.fr.form.ui.ComboBox;

    import com.fr.ui.DataFilter;

     

    public class CustomComboBox extends ComboBox {

     

            
    private static final long serialVersionUID = 7169771062153345236L;

            

            @Override

            
    public String getXType() {

            
    return "customcombo";

        }


            

            @Override

            
    protected DataFilter createDataFilter() {

            
    return new CustomComboBoxDataFilter();

        }


    }


     

    因為要改變過濾方式,就要重寫一個過濾器

    package com.hg.free.plugin.customcombo.param;

     

    import com.fr.form.ui.ComboBoxDataFilter;

     

    public class CustomComboBoxDataFilter extends ComboBoxDataFilter {

            @Override

            
    public boolean isMatch(String txt, String filter) {

                    
    if(null==txt && null!=filter)return false;

                    
    if(null==txt && null==filter)return true;

                    
    return txt.indexOf(filter)!=-1;

            }


    }


     

    第三步,繼承前端控件JS

    ;

    (function($)
    {

            FR.CustomComboBoxEditor 
    = FR.extend(FR.ComboBoxEditor, {

                    _init: function () 
    {

                            FR.CustomComboBoxEditor.superclass._init.apply(
    this, arguments);

                    }


            }
    );

            $.shortcut(
    "customcombo", FR.CustomComboBoxEditor);

    }
    )(jQuery);

     好了~以上就是全部的代碼開發~然后寫個xmlant打包成插件就可以了。

     

    代碼解釋

    首先來看這段代碼是什么意思呢?

    就是我定義了一個控件類型為CustomComboBoxEditor的控件,他繼承了ComboBoxEditor的全部方法和屬性,并且我把新定義的控件類型的標記聲明為customcombo,這個標記有啥用勒,其他用途就不說了,單單說在這里的用途,就是JAVA 本身是不能讓前端取生成什么控件的~而是通過告訴前端一個配置,前端的JS引擎(姑且這么稱呼他吧)~根據這個配置去執行對應的腳本生成對應的dom樣式之類的~shortcut你就這么理解~后臺返回一個配置是要生成customcombo這個控件~那么它就像一個map一樣找到了對應的鍵值FR.CustomComboBoxEditor~然后把該控件的配置丟到這個方法里面去執行。就生成我們的控件了。

    因為這個例子中并沒有對前端有任何修改的要求~所以就沒做任何改動~下面看后臺。

    我們這個例子是要修改模糊匹配的方式。

    那么原來控件匹配的機制是怎么搞的,是這樣的:假設我是一個老板(媽蛋也只能假設一下了),現在我想了解一份紙質合同的細節,但是公司有一大坨紙質合同我怎么找呢~當然是請個秘書了(美女最好),我告訴她我要的合同大概是有些什么信息~然后她去找出來把最后找到的合同給我就可以了。

    我們這里控件ComboBox就是老板,ComboBoxDataFilter就是秘書,就是這么個意思,這里每個秘書肯定都有自己找合同的一套方法,以前那個秘書是只要有點相關的就都找出來了,新來的這個秘書是只找老板提示的信息匹配到的合同~查找匹配的方法就是isMatch,這個代碼就是這樣的,代碼的開發其實只要仔細分析就能夠映射到現實生活中的很多事務處理上面~因為代碼也是人設計的,邏輯總逃脫不了人處理事務的思維。



    主站蜘蛛池模板: 亚洲狠狠ady亚洲精品大秀| 亚洲一级特黄大片在线观看| 亚洲一区二区三区高清| 国产无遮挡色视频免费观看性色| 亚洲?V无码成人精品区日韩| 亚洲av无码一区二区三区人妖| 国产高清视频在线免费观看| 亚洲成在人线aⅴ免费毛片| 日本媚薬痉挛在线观看免费| 亚洲精品无码久久久久YW| 免费激情视频网站| 亚洲欧美在线x视频| 亚洲综合区小说区激情区| 一个人晚上在线观看的免费视频 | 91免费精品国自产拍在线不卡| 亚洲春黄在线观看| 四虎国产精品免费久久| 亚洲免费网站观看视频| 亚洲国产一区明星换脸| 韩国免费a级作爱片无码| 久久久久亚洲AV无码永不| 成人午夜视频免费| 黄页网址在线免费观看| 久久久青草青青亚洲国产免观| 99久久国产免费-99久久国产免费 99久久国产免费中文无字幕 | 美女被爆羞羞网站在免费观看| 相泽亚洲一区中文字幕| 久久成人无码国产免费播放| 99热亚洲色精品国产88| 亚洲日韩国产精品乱| 免费精品无码AV片在线观看| 最新亚洲卡一卡二卡三新区| 亚洲精品tv久久久久| 国产h肉在线视频免费观看| 色噜噜噜噜亚洲第一| 日本亚洲视频在线| 成年女人午夜毛片免费看| 男女一进一出抽搐免费视频 | 伊人亚洲综合青草青草久热| 精品一区二区三区免费毛片爱| 亚洲成a人片在线观看天堂无码|