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);
            }
        });
   
    }
}