Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JComboBox с фильтром / 3 сообщений из 3, страница 1 из 1
15.01.2010, 16:08:33
    #36412682
andrejs_sql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JComboBox с фильтром
Вот решил выложить на всеобщее обозрение свой код JComboBox`а с фильтрацией содержимого падающего меню.

Если у вас есть замечания с удовльствием прочту Ваш пост.



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
 package  utils;

 import  javax.swing.*;
 import  java.awt.event.*;
 import  java.util.Vector;

 public   class  comboFilter  extends  JComboBox {
    model oModel =  new  model();

     public  comboFilter() {
         this .setModel(oModel);
         this .setEditable(true);

         this .getEditor().getEditorComponent().addKeyListener((KeyListener)  new  KeyAdapter() {
             public   void  keyReleased(KeyEvent e) {

                 if  (e.getKeyCode() == KeyEvent.VK_UP | e.getKeyCode() == KeyEvent.VK_DOWN) {
                    comboFilter. this .getEditor().setItem(oModel.getSelectedItem());
                     return ;
                }

                String s = (String) comboFilter. this .getEditor().getItem();
                oModel.setSelectedItem(s);
                oModel.setFilter((String) comboFilter. this .getEditor().getItem());

                hidePopup();//для перерасчёта высоты попап-меню.
                showPopup();
            }
        });
    }

     void  setValue(Vector val) {
        oModel.vsrc = val;
        oModel.setFilter("");
    }


     class  model  extends  AbstractListModel  implements  ComboBoxModel {
        Object selectItem;
        String filter = "";

         public   void  setSelectedItem(Object anItem) {
             this .selectItem = anItem;
        }

         public  Object getSelectedItem() {
             return  selectItem;
        }

        //////////////////////////////////////////////////////////

        Vector vsrc =  new  Vector();
        Vector v =  new  Vector();

         public   int  getSize() {
             return  v.size();
        }
        
         public  Object getElementAt( int  index) {
             return  v.get(index);
        }
        //выставляем фильтр и фильтруем содержание
         public   void  setFilter(String s) {
             if  (s ==  null ) filter = "";
             else  filter = s;

            v.removeAllElements();
             for  ( int  q =  0 ; q < vsrc.size(); q++) {
                 if  (vsrc.get(q) ==  null )  continue ;
                String src = vsrc.get(q).toString();
                 if  (src ==  null )  continue ;
                 if  (src.startsWith(filter))
                    v.add(vsrc.get(q));
            }

             this .fireContentsChanged( this ,  0 , vsrc.size());
        }
    }

     public   static   void  main(String arg[]) {
        comboFilter combo =  new  comboFilter();
        JFrame fr =  new  JFrame();
        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
        fr.setContentPane(combo);
        fr.pack();
        fr.setVisible(true);

        Vector v =  new  Vector();
        v.add("1");
        v.add("a");
        v.add("abc");
        v.add("asd");
        v.add("agb");
        v.add("ash");
        v.add("asdv");

        combo.setValue(v);
    }
}

...
Рейтинг: 0 / 0
Период между сообщениями больше года.
02.05.2012, 15:38:05
    #37779192
KushnirykOleh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JComboBox с фильтром
Написано то, что, я думаю, многим интересно и нужно. Еще б коментов побольше, для новичков, таких как я )
...
Рейтинг: 0 / 0
02.05.2012, 15:48:37
    #37779222
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JComboBox с фильтром
KushnirykOlehНаписано то, что, я думаю, многим интересно и нужно. Еще б коментов побольше, для новичков, таких как я )
Скучная поделка какого-то новичка с такой кучей стилистических косяков, что даже в логику вчитываться не хочется.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JComboBox с фильтром / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]