在程序中,我的jcombobox是可编辑的
现在我想监听jcombobox中的输入(通过键盘输入),然后根据输入对jcombobox的下拉列表中
的数据进行排序。
请问如何实现??????多谢!
主要是不知道应该用哪个事件才能监听jcombobox中的输入

解决方案 »

  1.   

    刚刚解决的只是在jcombobox的下拉列表没有展开的情况下,对jcombobox中输入的捕捉,用的是popupMenuWillBecomeVisible事件
    如果在jcombobox的下拉列表展开的情况下,如何根据键盘输入,对jcombobox的下拉列表进行动态排序??????????
    很急啊!!!!
    多谢各位xdjm
      

  2.   

    1。继承JComboBox构造自己的类
    2。在你构造的类中,定义PropertyChangeSupport的对象
       PropertyChangeSupport pcs = new PropertyChangeSupport();
    3。覆盖掉JComboBox的addItem(Object obj)方法,在方法内调用激发器
       public void addItem(Object obj) {
           super.addItem()       Object tempObj = this.obj;
           this.obj = obj;       if (this.obj == obj) {
               return;
           }
           PropertyChangeListener[] ls = propertyChangeSupport.getPropertyChangeListeners();
           if ( ( ls == null ) || ( ls.length <= 0 ) ) {
               return;
           }
           propertyChangeSupport.firePropertyChange("obj",tempObj,obj);
       }4。在定义你构造的类的对象后,为此对象加载PropertyChangelistener这样在你每次进行输入后确认的时候,肯定会调用addItem(Object obj)方法(已经被覆盖的)。这样就可以激发PropertyChangeListener了明白了?ps:上面的代码没有上机测试,不敢保证准确,楼下的指正,不胜感激
      

  3.   

    我遇到的具体情况是这样的:jcombobox的下拉列表框很长,而且每一项都比较复杂
    现在用户的要求如下:用户可以在jcombobox中输入几个字符,然后程序自动把jcombobox的下拉列表框中的item根据用户的输入按相似度排序,以便用户可以较快找到需要的item
    楼上的程序好像并不能解决这个问题,xdjm们帮帮我啊!
      

  4.   

    这个问题我的思路是这样:
    1。你的Combobox中的Item应当包含一个JTextArea
    2。在这个JTextArea中按照我上面的方法加在propertyChange监听,覆盖setText方法
       (不知道在JTextArea上加载ActionListener是否可以捕获到事件源,不妨一试)
    3。在监听器的事件处理方法中,对Jcombobox中的Item进行重排(重排的算法根据客户要求),利用setComponent()进行重绘大概就是这个意思,抛砖引玉