資源簡介
實(shí)現(xiàn)對文本框的匹配,比如已存在的匹配集合包含:“abc”、"aa"、"bb"
輸入a時(shí)就會匹配到"abc"和"aa"

代碼片段和文件信息
package?autocomplete;
import?java.util.ArrayList;
import?java.util.HashSet;
import?java.util.List;
import?javafx.beans.property.SimpleStringProperty;
import?javafx.beans.value.ChangeListener;
import?javafx.beans.value.ObservableValue;
import?javafx.collections.FXCollections;
import?javafx.collections.ObservableList;
import?javafx.event.ActionEvent;
import?javafx.event.EventHandler;
import?javafx.geometry.Point2D;
import?javafx.scene.Scene;
import?javafx.scene.control.ListView;
import?javafx.scene.control.TextField;
import?javafx.scene.input.KeyCode;
import?javafx.scene.input.KeyEvent;
import?javafx.scene.input.MouseEvent;
import?javafx.stage.Popup;
import?javafx.stage.Window;
import?net.sourceforge.pinyin4j.PinyinHelper;
import?net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import?net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import?net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import?net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import?net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
/**
?*?自定提示控件
?*?
?*?根據(jù)輸入的內(nèi)容和提示列表來匹配提示信息
?*?
?*?
?*
?*/
public?class?AutoCompleteTextField
{
private?TextField?textField;
private?final?static?int?LIST_MAX_SIZE?=?6;
private?final?static?int?LIST_CELL_HEIGHT?=?24;
/**?pinyin4j?工具類?用來匹配輸入內(nèi)容?*/
private?HanyuPinyinOutputFormat?pinyinFormat?=?new?HanyuPinyinOutputFormat();
/**?用來存儲顯示?出來的信息列表?*/
private?ObservableList?showCacheDataList?=?FXCollections.?observableArrayList();
/**?用來存儲緩存的信息列表?重寫indexOf方法來獲取匹配到的數(shù)據(jù)?*/
private?List?cacheDataList?=?new?ArrayList()
{
private?static?final?long?serialVersionUID?=?281687373227150590L;
@Override
public?int?indexOf(object?searchContext)
{
showCacheDataList.clear();
if(null?==?searchContext?||?searchContext.toString().equals(““))?{
return?-1;
}
int?size?=?cacheDataList.size();
for?(int?i?=?0;?i? {
char[]?charArry?=?cacheDataList.get(i).toCharArray();
StringBuilder?sbPinyin?=?new?StringBuilder();
String?indexPinyin?=?new?String();
for?(char?ch?:?charArry)
{
//?將搜索內(nèi)容轉(zhuǎn)換為拼音?方便搜索
try
{
String[]?pinyin?=?PinyinHelper.toHanyuPinyinStringArray(ch?pinyinFormat);
sbPinyin.append(null?!=?pinyin???pinyin[0]?:?ch);
if(null?!=?pinyin)?{
indexPinyin?=?indexPinyin?+?pinyin[0].charAt(0);
}
}?catch?(BadHanyuPinyinOutputFormatCombination?e)
{
sbPinyin.append(ch);
}
}
if?(cacheDataList.get(i).contains(searchContext.toString())||?sbPinyin.toString().contains(searchContext.toString())?||?indexPinyin.contains(searchContext.toString()))
{
showCacheDataList.add(cacheDataList.get(i));
}
}
return?-1;
};
};
/**?監(jiān)聽輸入框的內(nèi)容?*/
private?SimpleStringProperty?inputContent?=?new?SimpleStringProperty();
/**?輸入內(nèi)容后顯示的pop?*/
private?Popup?popSh
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????????491??2014-09-30?14:15??AutoComplete\.classpath
?????文件?????????388??2014-09-30?13:52??AutoComplete\.project
?????文件?????????230??2014-09-30?13:58??AutoComplete\.settings\org.eclipse.core.resources.prefs
?????文件?????????598??2014-09-30?13:52??AutoComplete\.settings\org.eclipse.jdt.core.prefs
?????文件????????2996??2014-09-30?14:19??AutoComplete\bin\autocomplete\AutoCompleteTextField$1.class
?????文件????????1375??2014-09-30?14:19??AutoComplete\bin\autocomplete\AutoCompleteTextField$2.class
?????文件????????1470??2014-09-30?14:19??AutoComplete\bin\autocomplete\AutoCompleteTextField$3.class
?????文件????????1001??2014-09-30?14:19??AutoComplete\bin\autocomplete\AutoCompleteTextField$4.class
?????文件????????1166??2014-09-30?14:19??AutoComplete\bin\autocomplete\AutoCompleteTextField$5.class
?????文件????????7272??2014-09-30?14:19??AutoComplete\bin\autocomplete\AutoCompleteTextField.class
?????文件????????1087??2014-09-30?14:15??AutoComplete\bin\autocomplete\AutoCompleteTextFieldBuilder.class
?????文件????????1165??2014-09-30?14:22??AutoComplete\bin\autocomplete\demo\AutoCompleteTextFieldDemo$1.class
?????文件????????2147??2014-09-30?14:22??AutoComplete\bin\autocomplete\demo\AutoCompleteTextFieldDemo.class
?????文件??????184856??2014-09-30?14:14??AutoComplete\lib\jfxgraph-asm-ext-1.0.0-RELEASE.jar
?????文件????15106233??2014-09-30?13:53??AutoComplete\lib\jfxrt.jar
?????文件??????209862??2014-09-30?13:53??AutoComplete\lib\pinyin4j-2.5.0.jar
?????文件????????7308??2014-09-30?14:19??AutoComplete\src\autocomplete\AutoCompleteTextField.java
?????文件?????????624??2014-09-30?13:59??AutoComplete\src\autocomplete\AutoCompleteTextFieldBuilder.java
?????文件????????1571??2014-09-30?14:22??AutoComplete\src\autocomplete\demo\AutoCompleteTextFieldDemo.java
評論
共有 條評論