Skip to main content

Java Applet : Fotoğraf Albümü

Fırsat buldukça Java ve Java Uygulamaları ile ilgili  yazı girmeye devam ediyorum.  Bu paylasağım uygulama bir  Fotoğraf albümü uygulaması.  Bu uygulamayı yaparken  Java Appletlerinden , Canvas sınıfından, Buton tipi nesnelerden,  ve butonların tıklama olaylarını kontrol edebilmek için Action Listener’dan yararlandık.

Fotoğraf Albümü aşağıdaki gibi şey olacak tam olarak 🙂


Canvas sınıfı Java üzerinde 2D çizim işlemleri yaparken  yararlandığımız sınıflardan bir tanesidir.  Canvas ile ayrıntılı bilgiyi Oracle’nin sitesinde tam olarak burada mevcut.  Biz bu Canvas nesnesini üzerine fotoğraflarımızı yerleştirmek için kullanacağız.

Bu işlemleri  yaptıktan sonra fotoğraflarımızı programımıza çekmemiz gerekiyor birden fazla fotoğraf çekeceğimizi hesap ediyoruz, bu yüzden bir dizi tanımlamamız lazım. Peki bu dizinin türü ne olmalı ?  Nesne Yönelimli dillerde bu tür şeyler için kolayca  çözümler bulunabilir. Java ‘da bir fotoğrafı  tutmak için kullanabileceğimiz sınıfıdır. Sınıf ile ilgili ayrıntılı dokumantasyona   buradan erişebilirsiniz.   Birden fazla fotoğraf tutmak için Image türünde bir  dizi tanımlaması yapmamız gerekiyor.

Bu  işlemide tamamladıktan sonra artık Java Appletimizi  yazmaya başlayabiliriz. Bildiğiniz üzere bir Java Applet çalışırken ilk olarak  onun init()  isimli metodu çalişir. Bu metod appletin açılışta alacağı özellikleri belirleyebildiğimiz bir metoddur. Bu kısımla ilgili ayrıntılı açıklamayı Kod kısmında bulabilirsiniz.

Fotoğraflarımızı Image nesnemize eklerken yerini tam olarak bildirmek için getCodeBase() isimli metodu kullandık.  getCodeBase() metodu appleti içeren dizini gösteren stringi geri dönüş değeri olarak verir.


Fotoğraf albümün kodlarını paylasiyoruz. Düzgün bir görüntü alabilmek için bütün fotoğrafların aynı boyutta olmasına dikkat edin. Örneğin bütün fotoğraflarınız  600*800 piksel boyutunda olsunlar.

 

 

 

 
package PhotoAlbum;
 
 
 
 
 
import java.awt.*;
import java.applet.*;
import java.applet.Applet;
import java.awt.event.*;
import java.awt.image.*;
 
public class PhotoAlbum extends Applet implements ActionListener{
 
//  Butonların tıklanıp tıklanmadığını kontrol edebilmek için ActionListener kullaniyoruz.
 
 
	Button
			previous = new Button("Önceki"),
			first = new Button("İlk Fotoğraf"),
			last = new Button("Son Fotoğraf"),
			next = new Button("Sonraki");
 
			// Bu kısımda Appletimizde konumlandıracağımız Butonları tanımladık 
			// Görüldüğü üzere 4 adet butonumuz var ve hepsi farklı bir işlem yapacaklar.
 
 
	Canvas
			imageCanvas = new Canvas();
 
 
 
	final int total = 6;			// Toplam Eklenecek Fotoğraf sayısı  buradan kontrol ediliyor.
	int i = 0;						// Baslangıc fotogfafının indisi 
 
	Image Resimler[] = new Image[total];
 
 
public void init() {
 
	albumYap();
	// albumYap isimli metod cağırılıyor. Bu metodda ekranımıza paneller  vs vs şeyler ekleyeceğiz.
		// Resimleri Programma cek 
 
		for (int p=0; p < total; p++) {
			Resimler[p] = getImage(getCodeBase(), "Photos/Image"+p+".JPG");
			prepareImage(Resimler[p], this);
 
		}
 
		/** Bu kısımda Fotoğrafları Applete yüklüyoruz.   Yukarıda gözüktüğü üzere "total"  isimli değişken bizim fotoğfraf 
		sayımızı tutan değişkendir.  O değişkeni kaç olarak belirlersek o miktarda albüme fotoğraf ekleyebiliriz.  Döngü içersinde 
		Image cinsinden tanımladıgım Resimler isimli image dizisinin  o anki elamanına (ki bizim programızda 0,1,2,3,4,5 değerlerini alacaktır) fotoğrafı yükleyecektir.
         Peki ama nasıl ?  getImage() fonksiyonu  ile resimi ekleyeceğimizi bildirdik. Ama birde   fotoğrafın yerini bildirmemiz gerek. İşte burada 
		 getCodeBase() isimli metod ile programımızın çaliştiğı  dizini String olarak geri döndürür.  Yani programın caliştiği dizinin belirledik. ve O dizin artık bir string
 
 
		 Resimler[p] = getImage(getCodeBase(), "Photos/Image"+p+".JPG") şu satır ile tam olarak denilmek istenen şudur.  Caliştiğim dizinde Photos isimli bir klasor var 
		  ve bu klasor içinde  Image0.JPG, Image1.JPG... Image5.JPG gibi resim dosyaları var.  
		  Bu sekilde bütün fotoğrafları dizimize atmış olduk. */
 
	} 
 
	private void fotoGoruntule(int n) {
		// Fotoğrafları grafik ekranında göstermeye yarayan metod.
		Graphics g = imageCanvas.getGraphics();
		g.clearRect(10, 10, 700, 700);
		// Cervenin içini temizledik.
		g.drawImage(Resimler[n], 30, 10, this);
		 // Fonksiyon tanımlaması su sekildedir  
		 // drawImage(Image img, int x, int y, ImageObserver observer) --> Image nesne,x koordinat , y koordinat, ve sınıfımız
 
		// Fotoğrafı cizdik. 
		g.drawString("Image: "+(n+1)+"/"+total, 30, 500);
		// Applet Ekranına Örneğin birinci Fotoğrafta oldugumuz zaman "Fotoğraf 1 /6 "  yazar. Koordinatları x için 30 y için 500 noktasıdır.
	} // fotoGoruntule
 
	public void ilkeGit(){
 
		fotoGoruntule(0);
		// İlk Fotoğrafa gitmeyi sağladık.
 
	} // ilkeGit
 
	public void sonaGit(){
 
		fotoGoruntule(total-1);
		// Son Fotoğrafı ekrana cizmeyi sağladık.
 
	} // sonaGit
 
	public void oncekineGit(){
 
		i = i - 1;
		if (i <= -1){
			i = total-1;
		}
		fotoGoruntule(i);
		// bir önceki fotoğrafa gitmeyi sagladık.
	} // oncekineGit
 
	public void sonrakineGit(){
 
		i = i + 1;
		if (i == total){
			i = 0;
		}
 
		fotoGoruntule(i);
	} // sonrakineGit
 
         // Action listener kullanıldıgında bu metodun mutlaka yazılması lazım .
	public void actionPerformed(ActionEvent e){
 
		if (e.getSource() == previous)
			oncekineGit();
			// Eğer Tıklanan  "previous" isimli  butonsa oncekineGit() isimli fonksiyon calisacak.
		else if (e.getSource() == first)
			ilkeGit();
		else if (e.getSource() == last)
			sonaGit();
		else if (e.getSource() == next)
			sonrakineGit();
 
	//** Bu kısımda butonlara  tıklandığında ne  olacağını kontrol ediyoruz.  Hangi butonun tıklanıp tıklanmadıgını anlamak içiş  getSource isimli
     // metoddan yararlandık. 
  	} 
 
	public void paint(Graphics g) {
		ilkeGit();
		i = 0;
 
 
		// Appletimizin paint metoudu.
	}
 
	private void albumYap() {
 
		setBackground(Color.black);
		// arka planı siyah yap
		setForeground(Color.white);
		setLayout(new BorderLayout());
 
		Panel p1 = new Panel();
		// Yeni bir panel nesnesi oluşturduk. 
 
		p1.add(previous);
		// Panel nesnesine Previous isimli butonu ekledik.
		p1.add(first);
	    // Panel nesnesine first isimli butonu ekledik.
		p1.add(next);
		// Panel nesnesine next isimli butonu ekledik.
		p1.add(last);
	    // Panel nesnesine last isimli butonu ekledik.
 
		add(BorderLayout.NORTH, p1);
		add(BorderLayout.CENTER, imageCanvas);
 
		// Bu kısımda actionListener'in aktif olabilmesi için butonlarımıza ActionListeneri ekliyoruz.
		// Yani butonlarımızın hareketlenin izlendiğini belirtiyoruz. 
		previous.addActionListener(this);
		first.addActionListener(this);
		last.addActionListener(this);
		next.addActionListener(this);
 
	} // albumYap
} // Fotoğraf Albümü Sonu

Fotoğraf albümün kaynak kodlarını NetBeans Projesi olarak buradan indirebilirsiniz..

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Aytaç Cici

İstanbul Üniversitesi Bilgisayar Mühendisliği mezunu bir Yazılım Geliştirici. Çeşitli zamanlarda Java, PHP, C# ve Delphi gibi diller kullanarak yazılım geliştirmiştir. Bir dönem SEO alanında da çalışmalar yapmıştır.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Email
Print