2014-10-17 2 views
1

Я использую SwingX AutoCompleteDecorator на JComboBox. Все работает отлично, за исключением того, что я хотел бы, чтобы мой пользователь мог изменить имя моего объекта, имя, которое также отображается в поле со списком. Проблема заключается в том, что я могу обновить свой выпадающий но отображаемая строка из автозаполнения декоратора остается такой же, как показано на рисунке: ProblemОбновить JComboBox с SwingX AutoCompleteDecorator

код для обновления выпадающий выглядит следующим образом:

try { 
    Aannemer a = getNewAannemer(); 
    MainController.getInstance().updateAannemer(a); 
    aannemerBox.revalidate(); 
    aannemerBox.repaint(); 
} catch (Exception ex) { 
    //... 
} 

string, когда я повторно выбираю объект из выпадающего списка. Я также попытался использовать персонализированный рендерер и редактор для combobox.

Любые идеи, как я могу обновить строку, показанную в поле со списком?

ответ

0

С текущим кодом трудно сказать, что происходит не так. Следующий код работает просто отлично для меня

import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; 

import javax.swing.DefaultComboBoxModel; 
import javax.swing.JButton; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.WindowConstants; 
import java.awt.BorderLayout; 
import java.awt.EventQueue; 

public class AutoCompleteCombobox { 

    public static void main(String[] args) { 
    EventQueue.invokeLater(() -> { 
     JFrame frame = new JFrame("TestFrame"); 

     JComboBox<String> comboBox = new JComboBox<>(); 
     DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>(); 
     model.addElement("First"); 
     model.addElement("Second"); 
     comboBox.setModel(model); 
     comboBox.setEditable(true); 

     AutoCompleteDecorator.decorate(comboBox); 

     frame.getContentPane().add(comboBox); 

     JButton button = new JButton("Add item"); 
     button.addActionListener(e -> { 
     String selectedItem = (String) comboBox.getSelectedItem(); 
     if (comboBox.getSelectedIndex() == -1){ 
      model.addElement(selectedItem); 
     } 
     }); 
     frame.getContentPane().add(button, BorderLayout.SOUTH); 

     frame.pack(); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    }); 
    } 
} 
  • Авто-полных работ, как ожидается
  • я новые элементы ввода
  • При использовании кнопки добавления, я могу добавить новый элемент и автозаполнение ведет себя хорошо

Короче говоря, я не могу воспроизвести вашу проблему. Пожалуйста, разместите фрагмент кода в своем вопросе, который позволяет нам воспроизвести проблему.

Смежные вопросы