
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
07.05.2012, 23:46:29
|
|||
|---|---|---|---|
|
|||
помогите с JComboBox |
|||
|
#18+
Вот код import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.Vector; import javax.swing.JComboBox; import javax.swing.JFrame; public class JComboBoxAutocomplete { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("1"); list.add("abc"); list.add("asd"); list.add("asdV"); list.add("A"); list.add("Agb"); list.add("Asd"); list.add("ASD"); list.add("agb"); list.add("ash"); list.add("asdv"); final Testing test = new Testing(list); JFrame fr = new JFrame(); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fr.setContentPane(test); fr.pack(); fr.setVisible(true); test.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if(test.getSelectedItem()!=null) System.out.println(test.getSelectedItem()); } }); } } class Testing extends JComboBox { ArrayList<String> combolist; public Testing(ArrayList<String> var) { combolist = var; setEditable(true); for (int i = 0; i < combolist.size(); i++) { addItem(combolist.get(i)); } getEditor().getEditorComponent().addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) { if (e.getKeyCode() != 38 && e.getKeyCode() != 40 && e.getKeyCode() != 10) { String a = getEditor().getItem().toString(); removeAllItems(); int matches = 0; for (int i = 0; i < combolist.size(); i++) { if (combolist.get(i).toLowerCase().startsWith(a.toLowerCase())) { addItem(combolist.get(i)); matches++; } } getEditor().setItem(new String(a)); hidePopup(); if (matches != 0) { showPopup(); } } } }); } } Проблемы 2 1) Когда выбирать значение не мишкой а стрелками (вверх вниз) получаешь результат промежуточных значений, а мне надо только когда нажмешь ентер 2) комбобокс работает с автодополнением, но когда вибираеш значение после нескольких букв поиска (первое из тех которые подходят для дополнения) нажимаешь ентер заносится не то, которое первое в списку, а то, которое ввел в поле, хотя его не существует в списке. Например: вводишь "ab" а в консоль уже 2 раза вывелось "abc" так как оно первое по алфавиту подходит. Выделенное остается "abc" как единственное возможное. Но если нажать ентер в консоль идет ab, хотя такого значения быть не должно. На самом деле конечно в том, что я пишу ничего не идет в консоль, и лист не из стрингов а из объектов, я немного упростил для облегчения понимания. Помогите кто в свингу шарит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.05.2012, 09:01:15
|
|||
|---|---|---|---|
помогите с JComboBox |
|||
|
#18+
KushnirykOleh, Проблема1: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Проблема2: тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.05.2012, 09:04:14
|
|||
|---|---|---|---|
помогите с JComboBox |
|||
|
#18+
Код: java 1. - только для теста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.05.2012, 15:14:21
|
|||
|---|---|---|---|
|
|||
помогите с JComboBox |
|||
|
#18+
Спасибо. Не подскажете еще как при нажатии на комбобокс (в свернутом состоянии) удалять выбранное значение, или выделить текст чтоб удалить его одним нажатием бекспейса а не выделять вручную или удалять по одной букве ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2131784]: |
0ms |
get settings: |
22ms |
get forum list: |
32ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
87ms |
get topic data: |
25ms |
get forum data: |
7ms |
get page messages: |
89ms |
get tp. blocked users: |
3ms |
| others: | 397ms |
| total: | 676ms |

| 0 / 0 |
