Java 使用JSuggestField-附加SSCCE输入一个单词后,自动补全停止

Java 使用JSuggestField-附加SSCCE输入一个单词后,自动补全停止,java,xml,swing,user-interface,autocomplete,Java,Xml,Swing,User Interface,Autocomplete,我在我的项目中添加了自动完成的元素;但是在用户输入了一个 换句话说,自动完成算法停止。我可以添加更多的字符,但是没有 自动完成的建议 我正在使用(将jar添加到我的项目中),下面是SSCCE,它说明了问题: import javax.swing.*; import ch.rakudave.suggest.JSuggestField; import java.awt.*; import java.util.Vector; public class Classic extends JFrame

我在我的项目中添加了自动完成的元素;但是在用户输入了一个 换句话说,自动完成算法停止。我可以添加更多的字符,但是没有 自动完成的建议

我正在使用(将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);
        }
    });
}
}
import javax.swing.*;
导入ch.rakudave.suggest.JSuggestField;
导入java.awt.*;
导入java.util.Vector;
公共类经典扩展JFrame{
公共静态最终字符串CHILD=“/CHILD::”;
公共静态最终字符串子体=“/degenant::”;
公共静态最终字符串后跟_SIBLING=“/FOLLOWING SIBLING::”;
公共静态最终字符串子体_或_SELF=“/degenant或SELF::”;
公共静态最终字符串SELF=“/SELF::”;
公共静态最终字符串前置于_SIBLING=“/preference SIBLING::”;
公共静态最终字符串祖先或自身=“/祖先或自身::”;
公共静态最终字符串祖先=“/祖先::”;
public static final String FOLLOWING=“/FOLLOWING::”;
公共静态最终字符串preference=“/preference::”;
公共经典(){
初始化组件();
}
私有组件(){
向量=新向量();
vector.add(后代);
vector.add(在兄弟姐妹之后);
添加(后代或自身);
向量。添加(SELF);
vector.add(前面的兄弟);
添加(祖先或自身);
添加(祖先);
矢量。添加(如下);
矢量。添加(前面);
JSuggestField jsuggest=新的JSuggestField(这个,向量);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
设置大小(200200);
Container=getContentPane();
container.setLayout(新的FlowLayout(FlowLayout.LEFT));
JTextField textField=新的JTextField(15);
jsuggest.setPreferredSize(新尺寸(100,20));
//
//右对齐JTextField内容
//
jsuggest.setHorizontalAlignment(JTextField.RIGHT);
container.add(jsugest);
textField=jsuggest;
}
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
公开募捐{
new Classic().setVisible(true);
}
});
}
}
这是一个快照:

这很好,但我希望在用户每次输入字符
/
后自动补全就可以工作,因此一次自动补全是不够的

知道如何使用
JSuggestField
或其他方法解决这个问题吗


谢谢。

您使用哪个
JSuggestField
实现?另外,请编辑您的代码并提供一个@Howard:This:@Howard:Done!我附加了一个只允许一次使用自动补全功能的编译代码。有没有一种方法可以像我上面写的那样做到这一点,这意味着在每次
/
之后自动补全功能会再次工作?谢谢