0

現在のコードにオートコンプリートを追加しようとしているので、何度も試してみることにしました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 検索エンジン . メソッドの名前で述べたようにafterXMLfileWasUploadedopen XML fileボタンを押すと、ファイルがアップロードされ、プログラムに解析されます (問題ありません)。

しかし、ボックスCurrent pathに何かを書き込もうとすると、次のようになります。

  • tab上記の配列からのみ単語を書き込むことができます

  • リストされていない文字で始まる他の単語または文字を書くことはできません

    「abc」、「def」、「ghjk」、「lmnop」、「qrst」、「rstuv」、「wxyz」

  • tab上記の配列を使用して書かれた単語を実際に消去することはできません。

では、何が問題なのですか?どんな助けでも大歓迎です

よろしく

4

1 に答える 1

2

上のタブ配列の単語しか書けない

  • わかりません。現在のバージョンの SwingX 1.6.3 を使用する必要があります。

  • バックスペースが修正されているかどうかを確認する(SwingXエキスパートではない)、

  • SwingX チーム @kleopatra の素晴らしいメンバーの投稿を確認するのに役立ちます。

  • またはフォーラムで関連情報を検索できます

リストされていない文字で始まる他の単語または文字を書くことはできません

org.jdesktop.swingx.autocomplete.Configurator#configureTextComponent()、 API がDocument( Modelfor JTextComponents)について話していることに注意してください


  • 私のお気に入りの回避策は、(言及された問題や潜在的なバグを除いて) AutoComplete JComboBox / JTextField (Java5 以降)です。

  • AutoComplete JComboBox/JTextField を簡単に設定できます#setStrict(boolean flag)

  • 最後のキャレットを保存するための BackSpace、Focus に問題はありません

于 2012-06-06T20:34:55.840 に答える