En tant que logiciel de rapport développé par le plug-in, Finereport doit être développé par lui-même. Le package plug-in développé par Fanruan est officiellement fourni par Fanruan Forum. Vous pouvez aller au Fanruan Forum. Cet article présentera principalement comment développer un contrôle personnalisé. Voici une méthodologie.
Étape 1: Instancier une interface qui enregistre le contrôle
Donnez quatre informations à notre classe de contrôle, classe d'interface, chemin d'icône, nom de type de contrôle
package com.hg.free.plugin.customombo.param; import com.fr.design.design.creator.xcombobox; import com.fr.design.fun.impl.abstractParameterWidgetOptionProvider; import. Classe <? étend widget> classforwidget () {return CustomComboBox.class; } @Override public class <?> Apparenteforwidget () {return xcomboBox.class; } @Override public String iconPathForWidget () {return "/com/fr/web/images/combobox.png"; } @Override public String NameForWidget () {return "Box Drop-down personnalisé"; }}La deuxième étape consiste à réécrire la classe de contrôle
Package com.hg.free.plugin.customombo.param; import com.fr.form.ui.combobox; import com.fr.ui.datafilter; classe publique CustomComboBOX étend Combobox {private static final SerialVersionUid = 7169771062153345236L; @Override public String getxType () {return "CustomCombo"; } @Override Protected DataFilter CreateDataFilter () {return new CustomComboBoxDataFilter (); }}Parce que pour modifier la méthode de filtrage, vous devez réécrire un filtre
package com.hg.free.plugin.customombo.param; import com.fr.form.ui.comBOBOXDATAFILTER; classe publique CustomComboxDatafilter étend comboboxdatafilter {@Override public boolean ismatch (String txt, String Filter) {if (null == txt && null! = filter) return; if (null == txt && null == filter) return true; return txt.indexof (filtre)! = - 1; }}Étape 3: Hériter du contrôle frontal js
(Fonction ($) {fr.CustomComboBoXeditor = fr.Extend (fr.ChomboBoxEditor, {_init: function () {fr.customComboBoxEditor.superclass._init.apply (this, arguments);}}); $ .shortcut ("CustomComo", Fr.CustomCombeOK ~ ce qui précède est tout le développement de code ~ puis écrivez un XML et emballez-le dans un plug-in avec fourmi.
Explication du code:
Tout d'abord, voyons ce que signifie ce code?
J'ai défini un contrôle avec le type de contrôle CustomComboBoxEditor. Il hérite de toutes les méthodes et propriétés de ComboBoxEditor, et j'ai déclaré l'étiquette du type de contrôle nouvellement défini comme CustomCombo. À quoi sert cette balise? Je ne parlerai pas d'autres utilisations. Le simple but ici est que Java lui-même ne peut pas laisser le front-end obtenir le contrôle qu'il génère ~ Au lieu de cela, en disant à la configuration frontale une configuration, le moteur JS frontal (appelons-le qui est le nom) ~ Exécutez le script correspondant en fonction de cette configuration pour générer les styles DOM correspondants et ainsi de suite ~ shortcut que vous comprenez cette ~ Retour d'une configuration dans l'arrière Fr.CustomComboBoxEditor comme une carte ~ puis lance la configuration du contrôle dans cette méthode à exécuter. Notre contrôle est généré.
Parce qu'il n'y a aucune exigence pour aucune modification de l'extrémité avant de cet exemple ~ aucune modification n'est apportée ~ Regardons le backend ci-dessous.
Notre exemple est de modifier la méthode de correspondance floue.
Alors, qu'a fait le mécanisme de correspondance du contrôle d'origine? C'est comme ceci: supposons que je suis un patron (je ne peux que l'assumer). Maintenant, je veux connaître les détails d'un contrat papier, mais la société a un gros contrat papier, comment puis-je le trouver? Bien sûr, j'embauche un secrétaire (la beauté est la meilleure), et je lui ai dit quelles informations je voulais. Puis elle est allée le trouver et m'a donné le dernier contrat qu'elle a trouvé.
Le Control Combox ici est le boss, ComboboxDatafilter est le secrétaire, c'est ce que cela signifie. Chaque secrétaire ici doit avoir son propre ensemble de méthodes pour trouver un contrat. Dans le passé, le secrétaire a tout trouvé si c'était un peu lié. Le nouveau secrétaire n'a trouvé que le contrat qui était apparié avec les informations provoquées par le patron. La méthode pour trouver le match est correspondant. Ce code est comme ça. En fait, tant que le code est soigneusement analysé, il peut être mappé à de nombreuses transactions dans la vie réelle. Parce que le code est également conçu par les humains, la logique ne peut jamais échapper à la pensée des affaires des humains.
Ce qui précède est tout le contenu de cet article. J'espère que le contenu de cet article sera d'une aide à l'étude ou au travail de chacun. J'espère également soutenir plus Wulin.com!