package com.yc.autocomplete;
import java.util.ArrayList;
public class YcAutoCompleteUi {
protected Shell shell;
private Text text_1;
/**
* Launch the application.
* @param args
*/
public static void main(String[] args) {
try {
YcAutoCompleteUi window = new YcAutoCompleteUi();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Open the window.
*/
public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
/**
* Create contents of the window.
*/
protected void createContents() {
shell = new Shell();
shell.setImage(SWTResourceManager.getImage(YcAutoCompleteUi.class, "/images/yc.ico"));
shell.setSize(450, 300);
shell.setText("自动提示");
text_1 = new Text(shell, SWT.BORDER | SWT.WRAP | SWT.MULTI);
text_1.setBounds(78, 28, 280, 120);
//自动补齐
text_1.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent arg0) {
String temp = text_1.getText();
//输入的文本框末尾不能为空 且它的前面是空字符
int len = temp.length();
if(len<3){
return ;
}
if((!(temp.charAt(len-1)+"").equals(" "))&&((temp.charAt(len-2)+"").equals(" "))){
text_1.setSelection(len);
addNameTextFieldAssist(text_1);
}
}
});
addNameTextFieldAssist(text_1);
}
private void addNameTextFieldAssist(Text text) {
TextContentAdapter ad = new TextContentAdapter(){
/**
* 在控件中添加该关键字
* @param control
* @param text
* @param cursorPosition
*/
@Override
public void insertControlContents(Control control, String text,int cursorPosition) {
Point selection = ((Text) control).getSelection();
((Text) control).insert(text);
if (cursorPosition < text.length()) {
((Text) control).setSelection(selection.x + cursorPosition, selection.x + cursorPosition);
}
}
/**
* 设置关键字
* @param control
* @param text
* @param cursorPosition
*/
@Override
public void setControlContents(Control control, String text,
int cursorPosition) {
int len = text_1.getText().lastIndexOf(" ");
String temp = text_1.getText();
if(len==-1){
super.setControlContents(control, text, cursorPosition);
}else{
temp = temp.substring(0, temp.lastIndexOf(" "));
temp = temp.concat(" ").concat(text);
super.setControlContents(control, temp, cursorPosition);
}
}
/**
* 处理搜索关键字
* @param control
* @return
*/
@Override
public String getControlContents(Control control) {
String temp = ((Text) control).getText();
temp = temp.substring(temp.lastIndexOf(" ")+1);
return temp;
}
public Point getSelection(Control control){
return super.getSelection(text_1);
}
@Override
public Rectangle getInsertionBounds(Control control) {
return super.getInsertionBounds(control);
}
@Override
public void setSelection(Control control, Point range) {
super.setSelection(control, range);
}
};
AutoCompleteField au = new AutoCompleteField(text,ad , new String[]{"select","drop","delete","from","alter","table","create"});
List<String> list = new ArrayList<String>();
list.add("select");
list.add("drop");
list.add("delete");
list.add("update");
list.add("from");
list.add("alter");
list.add("create");
list.add("table");
String strs[] = new String[list.size()];
for (int i = 0; i < strs.length; i++) {
strs[i] = list.get(i).toLowerCase();
}
au.setProposals(strs);
}
}
|
SWT自动提示
最新推荐文章于 2021-02-24 07:10:13 发布