2014-10-17 71 views
1

我在JComboBox上使用SwingX AutoCompleteDecorator。一切正常,但我希望我的用戶可以更改我的對象的名稱,名稱也顯示在組合框中。問題是,我可以刷新我的組合框,但如圖片所示,從自動完成裝飾所顯示的字符串是相同的: Problem使用SwingX AutoCompleteDecorator刷新JComboBox

刷新組合框的代碼如下所示:

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

的當我從組合框中重新選擇對象時字符串更新。 我也嘗試使用組合框的個性化渲染器和編輯器。

任何想法如何我也可以刷新組合框中顯示的字符串?

回答

0

隨着當前的代碼,很難說出了什麼問題。如預期

  • 我可以輸入新項目
  • 當使用Add按鈕,我可以添加新的項目下面的代碼工作得很好,我

    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); 
        }); 
        } 
    } 
    
    • 自動完成的作品,並自動完成行爲很好

    總之,我不能重現你的問題。請在您的問題中發佈一段代碼,以便我們重現問題。