プロジェクトにオートコンプリートの要素を追加しました。ただし、ユーザーが 1 つの単語を入力すると、オートコンプリート アルゴリズムは停止します。さらに文字を追加できますが、オートコンプリートの提案はありません。
私は使用してJSuggestField
います(私のプロジェクトにjarを追加しました)、ここに問題を示すSSCCEがあります:
import javax.swing.*;
import ch.rakudave.suggest.JSuggestField;
import java.awt.*;
import java.util.Vector;
public class Classic extends JFrame {
public static final String CHILD = "/child::";
public static final String DESCENDANT = "/descendant::";
public static final String FOLLOWING_SIBLING = "/following-sibling::";
public static final String DESCENDANT_OR_SELF = "/descendant-or-self::";
public static final String SELF = "/self::";
public static final String PRECEDING_SIBLING = "/preceding-sibling::";
public static final String ANCESTOR_OR_SELF = "/ancestor-or-self::";
public static final String ANCESTOR = "/ancestor::";
public static final String FOLLOWING = "/following::";
public static final String PRECEDING = "/preceding::";
public Classic() {
initComponents();
}
private void initComponents() {
Vector<String> vector = new Vector<String>();
vector.add(DESCENDANT);
vector.add(FOLLOWING_SIBLING);
vector.add(DESCENDANT_OR_SELF);
vector.add(SELF);
vector.add(PRECEDING_SIBLING);
vector.add(ANCESTOR_OR_SELF);
vector.add(ANCESTOR);
vector.add(FOLLOWING);
vector.add(PRECEDING);
JSuggestField jsuggest= new JSuggestField(this,vector );
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200, 200);
Container container = getContentPane();
container.setLayout(new FlowLayout(FlowLayout.LEFT));
JTextField textField = new JTextField(15);
jsuggest.setPreferredSize(new Dimension(100, 20));
//
// Right justify the JTextField contents
//
jsuggest.setHorizontalAlignment(JTextField.RIGHT);
container.add(jsuggest);
textField = jsuggest;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Classic().setVisible(true);
}
});
}
}
スナップショットを次に示します。
これはいいことですが、ユーザーが文字を入力するたびにオートコンプリートが機能するようにしたい/
ので、1 つのオートコンプリートでは不十分です。
などを使用してこれを解決するにはどうすればJSuggestField
よいですか?
ありがとう。