SWT自动提示

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);
    }
}
图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值