首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwingX :一个关键字和几个建议

SwingX :一个关键字和几个建议
EN

Stack Overflow用户
提问于 2012-02-08 05:37:09
回答 1查看 3.2K关注 0票数 1

我想创建一个带有建议列表的JTextField (比如谷歌、netbeans……),换句话说,当我在我的JTextField中输入一个单词时,会显示一个列表……所以我试了一下:

代码语言:javascript
复制
import java.awt.BorderLayout;
import java.awt.HeadlessException;
import javax.swing.*;
import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;

/**
 *
 * @author marwen
 */
public class Test_swingx extends JFrame {

    public Test_swingx(String title) throws HeadlessException {
        JPanel pan = new JPanel();
        pan.setLayout(new BorderLayout());
        JTextField jtf = new JTextField(20);
        String[] tab = {"marwen", "marven", "mawww", "mamma", "ddd", "dddddd", "ppppp"};
        JList list = new JList(tab); //data has type Object[]
        AutoCompleteDecorator.decorate(list, jtf);
        pan.add(jtf, BorderLayout.NORTH);
        pan.add(list, BorderLayout.CENTER);

        setTitle(title);
        setContentPane(pan);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                Test_swingx tsx = new Test_swingx("helloo swingx");
            }
        });
    }
}

但是我得到了这个错误:

代码语言:javascript
复制
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.jdesktop.swingx.autocomplete.ListAdaptor.valueChanged(ListAdaptor.java:76)
at javax.swing.JList.fireSelectionValueChanged(JList.java:1798)
at javax.swing.JList$ListSelectionHandler.valueChanged(JList.java:1812)
at    javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184)
at  javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164)
at  javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211)
at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405)
at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415)
at javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:459)
at javax.swing.JList.setSelectedIndex(JList.java:2212)
at javax.swing.JList.setSelectedValue(JList.java:2362)
at  org.jdesktop.swingx.autocomplete.ListAdaptor.setSelectedItem(ListAdaptor.java:98)
at  org.jdesktop.swingx.autocomplete.AutoCompleteDocument.setSelectedItem(AutoCompleteDocument.java:313)

正常工作,我不明白文档中是否有错误?https://pirlwww.lpl.arizona.edu/resources/guide/software/SwingX/org/jdesktop/swingx/autocomplete/AutoCompleteDecorator.html

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-08 10:22:17

给出下面的代码:

  • http://www.jarvana.com/jarvana/view/org/swinglabs/swingx/1.6.1/swingx-1.6.1-sources.jar!/org/jdesktop/swingx/autocomplete/ListAdaptor.java?format=ok

抛出异常的代码行是:

代码语言:javascript
复制
getTextComponent().setText(stringConverter.getPreferredStringForItem(list.getSelectedValue()));

在这种情况下,stringConverter为null。这就解决了这个问题:

代码语言:javascript
复制
AutoCompleteDecorator.decorate(list, jtf, ObjectToStringConverter.DEFAULT_IMPLEMENTATION);

如果你还没有看过,看看这篇文章:

  • http://today.java.net/pub/a/today/2007/07/19/adding-auto-completion-to-swing-comboboxes.html
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9184350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档