SwingX AutoCompleteDecorator: не найдено подходящего метода для украшения

Я пытаюсь протестировать SwingX в первый раз. Для этого я прочитал документ: http://www.jdocs.com/swingx/1.0/org/jdesktop/swingx/autocomplete/AutoCompleteDecorator.html

Я хотел бы сделать предложение по JTextField следующим образом:

List items = [...];

JTextField textField = [...];

AutoCompleteDecorator.decorate(textField, items); 

поэтому я создаю проект на netbeans, это мой код:

package test_swingx;

import java.awt.Dimension;
import java.awt.HeadlessException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;

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

public Test_swingx(String title) throws HeadlessException {

    this.setTitle(title);
    JPanel pan=new JPanel();
    JTextField jtf=new JTextField();
    jtf.setColumns(20);
    List items  = new ArrayList();
    items.add("hello");
    items.add("marwen");
    items.add("allooo");
    AutoCompleteDecorator.decorate(jtf, items);
    pan.add(jtf);
    this.setContentPane(pan);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    this.setBounds(280, 150, 500, 200);

 }


 public static void main(String[] args) {

    Test_swingx tsx=new Test_swingx("helloo swingx");

 }
}

введите здесь описание изображения

Я получаю эту ошибку:

no suitable methode found for decorate....

Я хорошо слежу за синтаксисом, я не понимаю, где ошибка? ЛЮБОЙ ПОМОГАЕТ?


person Marwen Trabelsi    schedule 07.02.2012    source источник
comment
пожалуйста, изучите соглашения об именах Java и придерживайтесь их   -  person kleopatra    schedule 07.02.2012


Ответы (1)


Ваш метод декоративного вызова разрешает первый метод ниже, который неверен. Второй метод украшает ожидаемый JList вместо списка.

public static void decorate(JComboBox comboBox, ObjectToStringConverter stringConverter)
public static void decorate(JList list, JTextComponent textComponent) 

Однако, если вы все еще хотите использовать список, вы должны использовать этот метод,

public static void decorate(JTextComponent textComponent, List<?> items, boolean strictMatching)

Я изменил часть ошибки в вашем вопросе на это.

import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.JTextComponent;

import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;

public class Test_swingx extends JFrame
{

    public Test_swingx(String p_title)
    {
        this.setTitle(p_title);
        JPanel pan = new JPanel();
        JTextComponent jtf = new JTextField();
        ((JTextField) jtf).setColumns(20);
        List items = new ArrayList();
        items.add("hello");
        items.add("marwen");
        items.add("allooo");
        AutoCompleteDecorator.decorate(jtf, items, false);
        pan.add(jtf);
        this.setContentPane(pan);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        this.setBounds(280, 150, 500, 200);     
    }

    public static void main(String[] args)
    {
        Test_swingx tsx = new Test_swingx("helloo swingx");     
        tsx.setVisible(true);
    }

}
person Jasonw    schedule 07.02.2012
comment
да, это работает очень хорошо, беда в том, что в документе есть ошибка: O... см.: jdocs.com/swingx/1.0/org/jdesktop/swingx/autocomplete/ - person Marwen Trabelsi; 07.02.2012
comment
хе-хе, ну да, если в документе есть путаница, просто прочитайте сам исходный код, это всегда должно работать. ;-) кстати, я использую версию 1.6.2 свинкс - person Jasonw; 07.02.2012