23 Ağustos 2012 Perşembe

Google’ın Autocomplete Algoritması ve JSuggestField Bileşeni


Google arama motorunda herhangi bir konuda arama yaparken bize tavsiyeler sunması autocomplete algoritması sayesindedir. Bu algoritma belki de son zamanların en güzel algoritmalarından birisidir.


İşte bu işi yapan Java da bir class vardır. Bu classı kullanmak için  buradan jar dosyasını indirmek gerekiyor.  Daha sonra bu jar dosyasını projemize eklememiz gerekiyor.

                                               
Burada kullanacağımız sınıf JSuggestField classıdır. Onunda kullanımı için aşağıda ki kodlara bir göz atabilirsiniz.
package suggestionjava;

import ch.rakudave.suggest.JSuggestField;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.Vector;
import javax.swing.JFrame;

public class SuggestionJava {
    public static void main(String[] args) {
        Vector<String> v=new Vector<>();
        Dimension d=new Dimension(60,20);
        JFrame f=new JFrame();
        v.add("Mesut");
        v.add("Emre");
        v.add("Emirhan");
        v.add("Hüsamettin");
        v.add("İlker");
        v.add("Muhammed");
        JSuggestField sg =new JSuggestField(f);
        sg.setSuggestData(v);
        sg.setPreferredSize(d);
        f.setVisible(true);
        f.setLocationRelativeTo(null);
        f.setSize(200, 100);
        f.setLayout(new FlowLayout());
        f.add(sg);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
    }
}
Bu classın constructoru gereği içine bir frame ve bir Vector atabiliriz. Ya da sadece Frame de alabiliriz. Biz yalnızca Frame nesnesi alıp daha sonra setSuggestData() metodu ile Vector nesnesi ekledik. Program çalışında karşımıza bir textField gelecek. Netekim bu class JTextField classında türetilmiştir. Pencere ki textField’in en ve boy uzunluğunu ayarlamak için Dimension nesnesinden yararlanılır.  Bu nesne 11. Satırda tanımlanmıştır.
Vector nesnesine gördüğünüz gibi veri ekledik. Daha önceki yazılarımda bu classdan bahsetmiştim. Dinamik bir dizi gibi düşünebiliriz. add() metodu ile bu dinamik diziye eleman ekleyebiliriz. Bu elemanların String nesnesi olması şarttır. Programın görüntüsü aşağıda ki gibidir.

                                                                       

Hiç yorum yok:

Yorum Gönder