2012-06-06 2 views
0

Я пытаюсь добавить автозаполнение к моему текущему коду, поэтому после бесчисленных раз Я решил попробовать SwingX.SwingX идентифицирует только указанное слово из массива слов и не позволяет выбирать другие слова

Код компилируется, работает, однако у меня все еще есть некоторые «незначительные» проблемы.

Вот мой код:

public class GuiHandler extends javax.swing.JFrame { 

private javax.swing.JTextField jtfBoxOfCurrentPath; 


// more irrelevant code 

     private void afterXMLfileWasUploaded() { 

     String[] tab = {"abc", "def", "ghjk", "lmnop", "qrst", "rstuv", "wxyz"}; 

     JList list = new JList(tab); //data has type Object[] 

     // jtfBoxOfCurrentPath.setToolTipText(""); // I removed this line , this is when I don't want to use auto-completion 

     AutoCompleteDecorator.decorate(list, jtfBoxOfCurrentPath, ObjectToStringConverter.DEFAULT_IMPLEMENTATION); 

     jtfBoxOfCurrentPath.addActionListener(new java.awt.event.ActionListener() 
     { 
      public void actionPerformed(java.awt.event.ActionEvent evt) 
      { 
       boxOfCurrentPathActionPerformed(evt); 
      } 

     }); 

// and more code 

Это общий вид моей программы: XML search engine. Как упоминалось по имени метода afterXMLfileWasUploaded, после того, как я нажал кнопку open XML file, файл загружается и анализируется в программу (без проблем).

Но когда я пытаюсь написать что-то в поле Current path, то:

  • Я могу только написать слова из массива tab выше

  • Я не могу написать любое другое слово или символ которые начинаются с символа, который не перечислен в

    "ABC", "Def", "ghjk", "lmnop", "QRST", "rstuv", "WXYZ"

  • Я не могу на самом деле стереть любое слово, которое было написано с использованием массива tab выше.

Что случилось? любая помощь будет очень признателен

С уважением

ответ

2

Я могу только написать слова из массива вкладок выше

  • ни малейшего представления, вы должны использовать текущую версию SwingX 1.6.3

  • , чтобы проверить, является забоем фиксированной (не SwingX эксперта),

  • может помочь вам проверить почту great member of SwingX team @kleopatra,

  • или на их форуме вы можете поиск соответствующего Infos

Я не могу написать никакое другое слово или символ, которые начинаются с символа, который не указан в

org.jdesktop.swingx.autocomplete.Configurator#configureTextComponent(), уведомление API говорить о Document (Model для JTextComponents)


  • моего любимое временное решение (без о вышеуказанных проблемах и потенциальных ошибок) AutoComplete JComboBox/JTextField (java5 и выше),

  • там вы можете легко установить автозаполнение JComboBox/JTextField #setStrict(boolean flag)

  • не проблема с BackSpace, Focus, хранить последний Caret

+0

Я попробовал ваш пример, код не позволяет ничего вводить, но слова, которые были введены с помощью 'listSomeAnotherString.add (.. .) ' – ron

+1

еще раз вы пытались переключиться на' someTextField.setStrict (false) '???? или 'someComboBox.setStrict (false)' ???, я не могу поверить :-) – mKorbel

+0

Хорошо, это работает :) так большое спасибо, во-первых. Но, вопрос в том, могу ли я использовать этот класс для манипулирования полем, которое я упоминал выше, в моей программе с объектом 'JTextField jtfBoxOfCurrentPath'? – ron

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