欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解析如何開發(fā)FineReport的自定義控件

 更新時(shí)間:2016年12月15日 16:02:21   作者:老A不折騰  
FineReport作為插件化開發(fā)的報(bào)表軟件,有些特殊需求的功能需要自己開發(fā),開發(fā)的插件包帆軟官方有提提供,可以去帆軟論壇上找,本文將主要介紹如何開發(fā)一個(gè)自定義控件,這里講講方法論。需要的朋友一起來(lái)看下吧

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

第一步:實(shí)例化一個(gè)注冊(cè)控件的接口

給四個(gè)信息 我們的控件類,界面類,圖標(biāo)路徑,控件類型名字

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

因?yàn)橐淖冞^(guò)濾方式,就要重寫一個(gè)過(guò)濾器

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);

好了~以上就是全部的代碼開發(fā)~然后寫個(gè)xml用ant打包成插件就可以了。

代碼解釋:

首先來(lái)看這段代碼是什么意思呢?

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

因?yàn)檫@個(gè)例子中并沒(méi)有對(duì)前端有任何修改的要求~所以就沒(méi)做任何改動(dòng)~下面看后臺(tái)。

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

那么原來(lái)控件匹配的機(jī)制是怎么搞的,是這樣的:假設(shè)我是一個(gè)老板(媽蛋也只能假設(shè)一下了),現(xiàn)在我想了解一份紙質(zhì)合同的細(xì)節(jié),但是公司有一大坨紙質(zhì)合同我怎么找呢~當(dāng)然是請(qǐng)個(gè)秘書了(美女最好),我告訴她我要的合同大概是有些什么信息~然后她去找出來(lái)把最后找到的合同給我就可以了。

我們這里控件ComboBox就是老板,ComboBoxDataFilter就是秘書,就是這么個(gè)意思,這里每個(gè)秘書肯定都有自己找合同的一套方法,以前那個(gè)秘書是只要有點(diǎn)相關(guān)的就都找出來(lái)了,新來(lái)的這個(gè)秘書是只找老板提示的信息匹配到的合同~查找匹配的方法就是isMatch,這個(gè)代碼就是這樣的,代碼的開發(fā)其實(shí)只要仔細(xì)分析就能夠映射到現(xiàn)實(shí)生活中的很多事務(wù)處理上面~因?yàn)榇a也是人設(shè)計(jì)的,邏輯總逃脫不了人處理事務(wù)的思維。

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • Java transient關(guān)鍵字原理解析

    Java transient關(guān)鍵字原理解析

    這篇文章主要介紹了Java transient關(guān)鍵字原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java學(xué)習(xí)之反射機(jī)制及應(yīng)用場(chǎng)景介紹

    Java學(xué)習(xí)之反射機(jī)制及應(yīng)用場(chǎng)景介紹

    本篇文章主要介紹了Java反射機(jī)制及應(yīng)用場(chǎng)景,反射機(jī)制是很多Java框架的基石。非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-11-11
  • spring+html5實(shí)現(xiàn)安全傳輸隨機(jī)數(shù)字密碼鍵盤

    spring+html5實(shí)現(xiàn)安全傳輸隨機(jī)數(shù)字密碼鍵盤

    這篇文章主要為大家詳細(xì)介紹了spring html5實(shí)現(xiàn)安全傳輸隨機(jī)數(shù)字密碼鍵盤,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • SpringBoot萬(wàn)字爆肝高級(jí)配置

    SpringBoot萬(wàn)字爆肝高級(jí)配置

    SpringBoot不僅支持常規(guī)的properties配置文件,還支持yaml語(yǔ)言的配置文件,yaml是以數(shù)據(jù)為中心的語(yǔ)言,在配置數(shù)據(jù)的時(shí)候具有面向?qū)ο蟮奶卣?。application.properties是比較常見的配置文件,SpringBoot的全局配置文件的作用是對(duì)一些默認(rèn)配置的配置值進(jìn)行修改
    2022-07-07
  • Java如何使用正則表達(dá)式從字符串中提取數(shù)字

    Java如何使用正則表達(dá)式從字符串中提取數(shù)字

    這篇文章主要介紹了Java如何使用正則表達(dá)式從字符串中提取數(shù)字問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • executor包執(zhí)行器功能

    executor包執(zhí)行器功能

    這篇文章主要介紹了executor包執(zhí)行器功能,executor包中的各個(gè)子包提供的功能,最終這些功能都由Executor接口及其實(shí)現(xiàn)類共同對(duì)外提供服務(wù)。下文介紹該執(zhí)行功能,具有一定的參考價(jià)值,需要的朋友可以考一下
    2022-02-02
  • 詳解Java編程中if...else語(yǔ)句的嵌套寫法

    詳解Java編程中if...else語(yǔ)句的嵌套寫法

    這篇文章主要介紹了Java編程中if...else語(yǔ)句的嵌套寫法,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • java與C 代碼運(yùn)行效率的對(duì)比(整理)

    java與C 代碼運(yùn)行效率的對(duì)比(整理)

    最近和朋友無(wú)意間討論起了 有關(guān)java 和C 的 效率問(wèn)題, (我是java 推介者, 他是 c 語(yǔ)言推介者, 他做的是嵌入式)故,想通過(guò)網(wǎng)絡(luò)查詢一下, 總結(jié)一下,兩者到底效率如何,其有何差異,原因又是啥?各種優(yōu)勢(shì)有在何處?
    2021-04-04
  • Springboot 接收POST、json、文本數(shù)據(jù)的方法 附示例

    Springboot 接收POST、json、文本數(shù)據(jù)的方法 附示例

    這篇文章主要介紹了Springboot 接收POST、json、文本數(shù)據(jù)實(shí)踐,如果把 json 作為參數(shù)傳遞,我們可以使用 @requestbody 接收參數(shù),將數(shù)據(jù)直接轉(zhuǎn)換成對(duì)象,本文通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Java函數(shù)式編程(八):字符串及方法引用

    Java函數(shù)式編程(八):字符串及方法引用

    這篇文章主要介紹了Java函數(shù)式編程(八):字符串及方法引用,本文是系列文章的第8篇,其它文章請(qǐng)參閱本文底部的相關(guān)文章,需要的朋友可以參考下
    2014-09-09

最新評(píng)論