combobox输入值 java,ComboBox如何根据输入的内容自动找到下拉框中的对应条目(50分)...

呵呵,我也写了个,还在调试着,对于出错目前还没有找到解决方法。

大家帮我看看,谢谢。

/** An auto-complete JComboBox */

import javax.swing.*;

import javax.swing.event.DocumentEvent;

import javax.swing.event.DocumentListener;

class BasicAutoCombo extends JComboBox implementsdo

cumentListener{

public BasicAutoCombo(){

super();

init();

}

public BasicAutoCombo(Object[] items){

super(items);

init();

}

void init(){

this.setEditable(true);

((JTextField)this.getEditor().getEditorComponent()).getDocument().addDocumentListener(this);

}

public void changedUpdate(DocumentEvent e){System.out.println("Chan1ged");}

public void insertUpdate(DocumentEvent e){System.out.println("Chan2ged");}

public void removeUpdate(DocumentEvent e){System.out.println("Chan3ged");}

}

public class AutoCombo extends BasicAutoCombo{

public AutoCombo(){

super();

}

public AutoCombo(Object[] items){

super(items);

}

public void insertUpdate(DocumentEvent e){

doLookup();

}

public void removeUpdate(DocumentEvent e){

doLookup();

}

voiddo

Lookup(){

this.showPopup();

String curItem = (String)this.getEditor().getItem();

int itemCount = this.getItemCount();

for (int i = 0;

i < itemCount;

i++){

String tmpItem = (String)this.getItemAt(i);

if (tmpItem.startsWith(curItem)){

try {

/** setSelectedItem() 总出错,怎么办?*/

this.setSelectedItem(tmpItem);

this.getEditor().setItem(tmpItem);

((JTextField)this.getEditor()).setCaretPosition(curItem.length());

((JTextField)this.getEditor()).moveCaretPosition(tmpItem.length());

} catch (Exception ex){ System.out.println("Error setting index");

}

break;

}

}

}

public static void main(String[] args){

JFrame frame = new JFrame("Test");

String[] items = {"Abstract", "Abound", "About", "Account", "Accuse"};

AutoCombo ac = new AutoCombo(items);

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

frame.getContentPane().add(ac);

frame.pack();

frame.setVisible(true);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值