powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JComboBox с фильтром
3 сообщений из 3, страница 1 из 1
JComboBox с фильтром
    #36412682
andrejs_sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот решил выложить на всеобщее обозрение свой код 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
Период между сообщениями больше года.
JComboBox с фильтром
    #37779192
KushnirykOleh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написано то, что, я думаю, многим интересно и нужно. Еще б коментов побольше, для новичков, таких как я )
...
Рейтинг: 0 / 0
JComboBox с фильтром
    #37779222
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KushnirykOlehНаписано то, что, я думаю, многим интересно и нужно. Еще б коментов побольше, для новичков, таких как я )
Скучная поделка какого-то новичка с такой кучей стилистических косяков, что даже в логику вчитываться не хочется.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JComboBox с фильтром
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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