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.

                                                                       

21 Ağustos 2012 Salı

MULTITHREADING


Birçok programlama dili aynı anda hangi işlemlerin yapılacağını programcıya bırakmaz. Fakat bunu düzenlemek için işlemlerin yapılma sırasını yani önce hangisinin sonra hangisinin yapılacağını programcıya bırakır.
Java dili programcılarına bu kolaylığı sağladı. Programcı yazdığı uygulamada iş bölümlemesi yapabilecekti.Multithreading uygulamaların performanslarını ciddi bir biçimde etkileyerek artış sağlar.Şimdi bu konuyu bir örnek üzerinde inceleyelim.

package multithreading;

public class threadyazdir extends Thread{
   
    private int beklemesuresi;

    public threadyazdir(String ad) {
        super(ad);
        beklemesuresi=(int)(Math.random()*6001);//6 saniye
    }

    @Override
    public void run() {
        try {
            System.err.println(getName()+" "+beklemesuresi+" kadar bekleyecek.");
            Thread.sleep(beklemesuresi);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Threadlere isim vererek istediğimizi istediğimiz zaman başlatabiliriz. Başlatmak için start() metodunu kullanmak yeterlidir.

20 Temmuz 2012 Cuma

Javada ArrayList Sınıfı


Şimdi nesneleri bellekte tutmak için kullanışlı ve bir o kadar da yararlı olan ArrayList sınıfından bahsedeceğiz. Nesneleri bir dizi yardımıyla da tutabiliriz. Fakat bu dizinin boyutunu değiştiremeyiz. Java bizlere bu sınıfı kullanarak dinamik bir bellek kullanımı ve aynı zamanda limitsiz bir nesne tutmamızı sağlar. Bu sınıfın belli başlı metodları aşağıda ki gibidir.
ArrayList()                                                                 Boş bir liste oluşturur.
Add(o):void                                                                o elemanını listeye  ekler
Add(index:int,o):void                                                   listenin belirtilen indexine o elemanını ekler.
Clear():void                                                                Tüm listeyi siler.
Contains(o:Object) :boolean                                        o elemanının listede olup olmadığına bakar.
Get(index:int)                                                              belirtilen indexde ki elemanı getirir.
indexOf(o:Object):int                                                  Belirtilen nesnenin indexini döner.
isEmpty():boolean                                                       Listenin boş olup olmadığını kontrol eder.
Remove(o:Object):boolean                                         belirtilen  elemanı listeden  kaldırır.

Bilindiği üzere ArrayList generic bir sınıftır. Kullanım şekli aşağıda ki gibidir.
ArrayList<data type> isim=new ArrayList<data type>();
Şeklindedir.
Aşağıda ki kodlara bir göz atabilirsiniz.
package arrarylistkullanimi;
import java.util.ArrayList;
public class ArraryListKullanimi {
    public static void main(String[] args) {
        ArrayList<String> arr=new ArrayList<String>();
        arr.add("Mesut Emre");
        arr.add("İsmail Enver");
        arr.add("Melikşah");
        arr.add("Mert");       
        if(arr.isEmpty())
        {
            System.err.println("Listede henüz eleman yoktur");
        }
        else
        {
            for (int i = 0; i < arr.size(); i++) {
                System.out.println(arr.get(i));
            }
        }       
        if (arr.contains("Mesut Emre")) {
            System.out.println("Şahıs listede vardır.");
        }
        else
        {
            System.err.println("Şahıs listede yoktur.");
        }     
        arr.remove("Mert");       
        for (int i = 0; i < arr.size(); i++) {
            System.out.println(arr.get(i));
        }       
        arr.clear();       
        if (arr.isEmpty()) {
            System.err.println("Liste eleman yoktur.");
        }
        else
        {
            System.out.println("Listede eleman vardır.");
        }
    }
}

Kodların çıktısı aşağıda ki gibidir.









4 Temmuz 2012 Çarşamba

BİLGİSAYAR TERİMLERİNİN TÜRKÇE KARŞILIKLARI


Görev çubuğu                         Değnek-ül vazife
Çift tıklama                             Tıkırt-ül tekerrür
Administrator                          Sahip-ül edevat
Flash disk                               Edevat-ül yumuşak
Hard disk                               Edevat-ül civanmert
Anti spyware                          Müdafa-ül hafiye
Mouse                                   Zındık faresi
Klavye                                   Taht-ül hurufat
İnternet                                  Allame-i ulul arz
Denetim masası                      Sehpa-i saltanat
CD-Rom                               Pervane-ül hafıza
Kasa                                     Kaide
Enter                                     Duhul
MSN                                    Elçi
Hata raporu                           Malumat-ül kabahat
Virüs                                     Deyyus
Mail server                            Divan-ül mektubat

30 Haziran 2012 Cumartesi

JAVADA İSTİSNA YÖNETİMİ (EXCEPTION HANDLING)


Runtime hataları JVM’nin yürütemeyeceği bir işlem olduğu zaman vuku bulur. Mesela , bir dizinin  eleman sayısı 10 olsun. Eğer siz 11 elemana ulaşmak isterseniz bu bir istisna olur. Java da bu istisnanın adı ArrayIndexOutOfBounds dur. Eğer  program sizden bir sayı isterken siz karakter girerseniz burada da bir istisna oluşur. Bu istisnalara daha bir çok misal verebiliriz. Fakat bunlardan bizim karşımıza en sık çıkanı InputMismatchException istisnasıdır. Yani girilmesi gereken değişken tipinden başka bir değişken girilmesi istisnasıdır.  İstisnaları Java dilinde  try-catch blokları ile fırlatılır. Şimdi buna bir örnek vererek mevzuu sonlandıralım.

package trycatchexception;

import java.util.InputMismatchException;
import java.util.Scanner;

public class TryCatchException {

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int k;
        boolean devam=true;
        do {           
            try {
                System.out.println("Bir sayı giriniz : ");
                k=sc.nextInt();
                System.out.println("Sayı : "+k);
                devam=false;//Bitirmek için
            } catch (InputMismatchException e) {
                System.err.println("Lütfen sayı giriniz!");
                sc.nextLine();
            }
        } while (devam);
    }
}

23 Nisan 2012 Pazartesi

Java da Animasyon Kavramı


JAVA DA ANİMASYON UYGULAMALARI
Bilindiği üzere canlandırma(animasyon) bir resmin ya da resimlerin belirli zaman aralıklarıyla ard arda gösterilmesi ile olur. Şimdi animasyon oluşturmak için yapılması gereken adımları teker teker açıklayalım.

Resim Yükleme
Java da resim yüklemek için Toolkit  classından yararlanılır. Bu class’ın kullanılışı şu şekildedir.
            Toolkit toolkit=Toolkit.getDefaultToolkit();
            Image resim=toolkit.getImage(dosyaYolu);  
Resim Çizme
Image’ler Java da Graphics sınıfının drawImage()  metoduyla çizilir.
public void paint(Graphics g){
                        g.drawImage(image,0,0,this);
            }         
Zamanlama
Belli bir aralıkta repaint() metodu çağırılırsa resimler ya da istenilen şey art arda çizilmiş olur . Aşağıda ki kodu inceleyelim.
            java.util.Timer timer=new java.util.Timer();
            TimerTask task=new TimerTask(){
                        public void run(){
                                   repaint();
            }
            };
            timer.schedule(task,0,500);

package animasyonuygulamasi;

import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Vector;

/**
 *
 * @author MESUT EMRE
 */
public class olay extends Canvas {
    private Vector resimler=new Vector();
    private int i=0;

    public olay() {
        Timer timer=new Timer();
        TimerTask timerTask=new TimerTask() {

            @Override
            public void run() {
                repaint();
            }
        };
        timer.schedule(timerTask, 0,800);
    }
   
    public void resimekle(String dosyayolu)
    {
        Toolkit toolkit=Toolkit.getDefaultToolkit();
        Image resim=toolkit.getImage(dosyayolu);
        resimler.add(resim);
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        i=i%images.size();
        Image image=(Image)resimler.get(i);
        g.drawImage(resim, 0, 0, this);
        i++;
    }

}

Kaynak kodları ve programın çalıştırılabilir halini buradan indirebilirsiniz. İyi çalışmalar...


29 Mart 2012 Perşembe

JAVA DA JDIALOG PENCERESİ

JDialog bileşeni temel de JFrame ile aynıdırlar. Programlar da her hangi bir bileşene basıldığında yeni bir ekranın gelmesini ve o ekranda işlemlerimizi yapıp bitirdikten sonra pencereyi kapattığımızda programın kapanmasını istemiyorsak JDialog bileşeni işimizi fazlasıyla görecektir. Bu bileşen de açılan pencere üzerinde setLayout( ) metodu ile layout ları ayarlayıp ona göre içerisine bileşenler koyabiliriz. Tıpkı pencere olayında ki gibi , orada ne yapıyorsak buradada aynı şeyleri yapmakta özgürüz. Lafı fazla uzatmadan kod kısmına geçelim. Aşağıda ki kodlar bir pencere de ki bas butonuna basıldığında açılan bir JDialog penceresini göstermektedir.

package jdialogpenceresi;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class olay extends JFrame {
   
    JDialog dialog=new JDialog();
    JButton buton1=new JButton("OK");
    JButton buton2=new JButton("CANCEL");
    JButton as=new JButton("BAS");
    public olay()
    {
        setLayout(new FlowLayout());
        add(as);
        as.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                dialog.setVisible(true);
                dialog.setLocationRelativeTo(null);
                dialog.setSize(300, 100);
                dialog.setLayout(new FlowLayout());
                dialog.add(buton1);
                buton1.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        JOptionPane.showMessageDialog(null, "OK butonuna bastınız.");
                    }
                });
                buton2.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        JOptionPane.showMessageDialog(null, "CANCEL butonuna bastınız.");
                    }
                });
                dialog.add(buton2);
            }
        });
   
    }
}