资源简介

实现对文本框的匹配,比如已存在的匹配集合包含:“abc”、"aa"、"bb" 输入a时就会匹配到"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;

/**
 * 自定提示控件
 * 


 * 根据输入的内容和提示列表来匹配提示信息

 * 


 * 
 *
 */
public class AutoCompleteTextField
{
private TextField textField;
private final static int LIST_MAX_SIZE = 6;
private final static int LIST_CELL_HEIGHT = 24;

/** pinyin4j 工具类 用来匹配输入内容 */
private HanyuPinyinOutputFormat pinyinFormat = new HanyuPinyinOutputFormat();

/** 用来存储显示 出来的信息列表 */
private ObservableList showCacheDataList = FXCollections. observableArrayList();

/** 用来存储缓存的信息列表 重写indexOf方法来获取匹配到的数据 */
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 < size; i++)
{
char[] charArry = cacheDataList.get(i).toCharArray();
StringBuilder sbPinyin = new StringBuilder();
String indexPinyin = new String();
for (char ch : charArry)
{
// 将搜索内容转换为拼音 方便搜索
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;
};
};

/** 监听输入框的内容 */
private SimpleStringProperty inputContent = new SimpleStringProperty();

/** 输入内容后显示的pop */
private Popup popSh

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         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

评论

共有 条评论