Sebagai perangkat lunak pelaporan yang dikembangkan berdasarkan plug-in, Finerport perlu dikembangkan dengan sendirinya. Paket plug-in yang dikembangkan oleh FanRuan secara resmi disediakan oleh Fanruan Forum. Anda dapat mencari di forum fanruan. Artikel ini terutama akan memperkenalkan cara mengembangkan kontrol khusus. Berikut adalah metodologi.
Langkah 1: Instantiate antarmuka yang mendaftarkan kontrol
Berikan empat informasi ke kelas kontrol kami, kelas antarmuka, jalur ikon, nama jenis kontrol
Paket com.hg.free.plugin.customcombo.param; import com.fr.design.designer.creator.xcomboBox; import com.fr.design.fun.impl.abstractparameterwidgetoptionprovider; impor com.fr.form.ui.widget; Public Class; kelas publik <? Extends Widget> classForWidget () {return customComboBox.class; } @Override Public Class <?> PenampilanForWidget () {return xcomboBox.class; } @Override public string iconPathForWidget () {return "/com/fr/web/images/combobox.png"; } @Override public String nameForWidget () {return "custom drop-down box"; }}Langkah kedua adalah menulis ulang kelas kontrol
Paket com.hg.free.plugin.customcombo.param; import com.fr.form.ui.comBobox; import com.fr.ui.datafilter; kelas publik CustomComboBox memperluas ComboBox {private static long serialversionuid = 7169771062153345236L; @Override public string getxtype () {return "customCombo"; } @Override Datafilter yang Dilindungi CreateDataFilter () {return new CustomComboBoxDataFilter (); }}Karena untuk mengubah metode penyaringan, Anda harus menulis ulang filter
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; }}Langkah 3: Mewariskan Kontrol Front-End JS
(function ($) {fr.customcomboBoBoxEditor = fR.Extend (fr.comBoboxEditor, {_init: function () {fr.customcomboBoxEditor.Superclass._init.Amply (ini, argumen);}); $ .superclass._init.Apply (ini, argumen);}); $ .shortcut ("customCoCoBoY) (freus);}); $ .shortcut (" customCoCoBoy (freus);}}); $.OK ~ di atas adalah semua pengembangan kode ~ kemudian tulis XML dan mengemasnya ke plug-in dengan semut.
Penjelasan Kode:
Pertama, mari kita lihat apa arti kode ini?
Saya mendefinisikan kontrol dengan tipe kontrol CustomComboBoxEditor. Ini mewarisi semua metode dan sifat comboBoxEditor, dan saya menyatakan tag jenis kontrol yang baru didefinisikan sebagai CustomCombo. Apa gunanya tag ini? Saya tidak akan berbicara tentang kegunaan lain. Just the purpose here is that JAVA itself cannot let the front-end get what control it generates~ Instead, by telling the front-end a configuration, the front-end JS engine (let's call it that's the name) ~ execute the corresponding script according to this configuration to generate the corresponding dom styles and so on ~ shortcut You understand this ~ Returning a configuration in the background is to generate the customcombo control~ Then it finds the corresponding key value Fr.customcomboboxeditor seperti peta ~ dan kemudian melempar konfigurasi kontrol ke dalam metode ini untuk dieksekusi. Kontrol kami dihasilkan.
Karena tidak ada persyaratan untuk modifikasi apa pun pada front-end dalam contoh ini ~ jadi tidak ada perubahan yang dilakukan ~ mari kita lihat back-end.
Contoh kami adalah memodifikasi metode pencocokan fuzzy.
Jadi apa yang dilakukan mekanisme pencocokan kontrol asli? Ini seperti ini: Misalkan saya seorang bos (saya hanya bisa menganggapnya). Sekarang saya ingin mengetahui detail kontrak kertas, tetapi perusahaan memiliki kontrak kertas besar, bagaimana saya bisa menemukannya? Tentu saja, saya menyewa seorang sekretaris (kecantikan adalah yang terbaik), dan saya memberi tahu dia informasi apa yang saya inginkan. Kemudian dia pergi untuk menemukannya dan memberi saya kontrak terakhir yang dia temukan.
Kontrol Combobox di sini adalah bos, ComboBoxDataFilter adalah sekretaris, itulah artinya. Setiap sekretaris di sini harus memiliki metode sendiri untuk menemukan kontrak. Di masa lalu, sekretaris menemukan segalanya jika itu sedikit terkait. Sekretaris baru hanya menemukan kontrak yang cocok dengan informasi yang diminta oleh bos. Metode untuk menemukan pertandingan adalah pertandingan. Kode ini seperti ini. Bahkan, selama kode dianalisis dengan cermat, itu dapat dipetakan ke banyak transaksi dalam kehidupan nyata. Karena kode ini juga dirancang oleh manusia, logika tidak akan pernah bisa lepas dari pemikiran manusia yang menangani urusan.
Di atas adalah semua konten artikel ini. Saya berharap konten artikel ini akan membantu untuk belajar atau bekerja semua orang. Saya juga berharap untuk mendukung wulin.com lebih lanjut!