如何开发FineReport的自定义控件

 我来答
huanglenzhi
2017-01-04 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517184
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
第一步:实例化一个注册控件的接口
给四个信息 我们的控件类,界面类,图标路径,控件类型名字
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);

好了~以上就是全部的代码开发~然后写个xml用ant打包成插件就可以了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式