플러그인이 개발 한보고 소프트웨어로서 Finereport는 자체적으로 개발해야합니다. Fanruan이 개발 한 플러그인 패키지는 공식적으로 Fanruan Forum에서 제공합니다. Fanruan 포럼에서 검색 할 수 있습니다. 이 기사는 주로 사용자 정의 컨트롤을 개발하는 방법을 소개합니다. 여기 방법론이 있습니다.
1 단계 : 컨트롤을 등록하는 인터페이스를 인스턴스화합니다
제어 클래스, 인터페이스 클래스, 아이콘 경로, 제어 유형 이름에 네 가지 정보 제공
package com.hg.free.prugin.customcombo.param; import com.fr.design.designer.creator.xcomobox; import com.fr.design.fun.impl.abstractparameterwidgetoptionptionptionprovider; import com.fr.form.ui.widget {public class widgetwidger and extgetwidget ggetggetggetggetggetggetggetggetgget gget getgegget gget getgetritget 클래스 <? 위젯> classforwidget () {return customcombobox.class; } @override public class <?> lookanceforwidget () {return xcombobox.class; } @override public String iconpathforwidget () {return "/com/fr/web/images/combobox.png"; } @override public String nameforwidget () {return "사용자 정의 드롭 다운 상자"; }}두 번째 단계는 제어 클래스를 다시 작성하는 것입니다
package com.hg.free.prugin.customcombo.param; import com.fr.form.ui.combobox; import com.fr.ui.datafilter; public class customcombobox 확장 combobox {private static final long serialversionuid = 7169771062153345236L; @override public String getxtype () {return "CustomCombo"; } @Override Protected DataFilter createAfilter () {return new CustomComboBoxDataFilter (); }}필터링 방법을 변경하려면 필터를 다시 작성해야합니다.
package com.hg.free.prugin.customcombo.param; import com.fr.form.ui.comboboxdatafilter; public class customboboxdatafilter 확장 comboboxdatafilter {@override public boolean ismatch (문자열 txt, 문자열 필터) {if (null == txt && null)가 허위로 돌아갑니다. if (null == txt && null == 필터) true를 반환합니다. return txt.indexof (필터)! = -1; }}3 단계 : 프론트 엔드 컨트롤 JS를 상속받습니다
(function ($) {fr.customcomboboxeditor = fr.extend (fr.comboboxeditor, {_init : function () {fr.customcomboxeditor.superclass._init.apply (this, arguments);}}); "customcombo")OK ~ 위는 모든 코드 개발입니다 ~ XML을 작성하여 Ant와 함께 플러그인으로 패키지하십시오.
코드 설명 :
먼저이 코드가 무엇을 의미하는지 봅시다.
제어 유형 CustomComboBoxEditor로 제어를 정의했습니다. Comboboxeditor의 모든 방법과 속성을 상속하고 새로 정의 된 제어 유형의 태그를 CustomCombo로 선언했습니다. 이 태그의 사용은 무엇입니까? 나는 다른 용도에 대해 이야기하지 않을 것입니다. 여기서의 목적은 Java 자체가 프론트 엔드에 프론트 엔드 JS 엔진을 말함으로써 프론트 엔드가 생성하는 것을 얻을 수 없다는 것입니다. 프론트 엔드 JS 엔진 (이름이라고 부르 자) ~ 해당 구성에 따라 해당 스크립트를 실행하여 해당 DOM 스타일을 생성하고 ~ ShortCuT를 생성하는 ~ CONTEATURATION을 생성하는 데 도움이되는 ~를 반환합니다. fr.customcomboboxeditor ~ map ~와 같은 컨트롤의 구성을이 메소드에 던져 실행합니다. 우리의 통제가 생성됩니다.
이 예제에서 프론트 엔드에 대한 수정에 대한 요구 사항이 없기 때문에 ~ 변경 사항이 없습니다 ~ 백엔드를 살펴 보겠습니다.
이 예는 퍼지 매칭 방법을 수정하는 것입니다.
그렇다면 원래 제어 일치 메커니즘은 무엇을 했습니까? 나는 다음과 같습니다. 내가 상사라고 가정 해 봅시다 (나는 단지 그것을 가정 할 수 있습니다). 이제 종이 계약의 세부 사항을 알고 싶지만 회사에는 큰 종이 계약이 있습니다. 어떻게 찾을 수 있습니까? 물론, 나는 비서를 고용하고 (아름다움은 최고입니다), 내가 원하는 정보를 그녀에게 말했습니다. 그런 다음 그녀는 그것을 찾아서 마지막으로 찾은 계약을 주었다.
여기서 제어 콤보 박스는 보스입니다. Comboboxdatafilter는 비서입니다. 여기의 모든 장관은 계약을 찾기위한 자신의 방법 세트가 있어야합니다. 과거에 비서관은 약간 관련이 있다면 모든 것을 발견했습니다. 새 비서는 상사가 제출 한 정보와 일치하는 계약 만 발견했습니다. 경기를 찾는 방법은 일치합니다. 이 코드는 다음과 같습니다. 실제로, 코드가 신중하게 분석되는 한 실제 생활에서 많은 거래에 매핑 될 수 있습니다. 이 코드는 또한 인간이 설계했기 때문에 논리는 인간이 업무를 다루는 생각을 피할 수 없습니다.
위는이 기사의 모든 내용입니다. 이 기사의 내용이 모든 사람의 연구 나 업무에 도움이되기를 바랍니다. 또한 wulin.com을 더 지원하기를 바랍니다!