Ana içeriğe atla

Java Grafik Kütüphanesini Kullanarak Kare ve Daire Çizmek

Öncelikle uygulamamizin nasil olacagina bir göz atalim:

"kare ve daire çizimi" basligiyla, 400-500 ebatinda, ekranimizin 300-100 koordinatlarinda açilan; altinda bize lazim olan tuslarin yesil arka plana yerlestirildigi bir pencere.
this.setTitle("kare ve daire çizimi");
this.setSize(400,500);
this.setLocation(300, 100);

Bunlara ilaveten daha bir çok ayar yapabilirdik. Mesela azami pence büyüklügünü-küçüklügünü belirleyebilirdik: this.setMaximumSize(maximumSize);
Veya rengini mavi yapabilirdik: this.setBackground(Color.BLUE);     ve daha birçok sey…

Tuslarimizi su sekilde olusturuyoruz;
Button ciz = new Button("çiz");
Button sil = new Button("sil");
Button buyut = new Button("+");
Button kucult = new Button("-");


Simdi bunlarin hareketlerini (tiklaninca ne yapacaklarini) denetleyecek olan merciye, yani ActionListener’e bildirmemiz lazim. Aksi taktirde, tiklansalar bile uygulamamizin bundan haberi dahi olmayacaktir.
ciz.addActionListener(this);
sil.addActionListener(this);
buyut.addActionListener(this);
kucult.addActionListener(this);


Son olarak bir de içerisinde “kare” ve “daire” seçenekleri olan seçenek (Choice) menüsü ekleyelim:
sekiller = new Choice();
sekiller.add("kare");
sekiller.add("daire");

Bütün bu tuslari ve seçenek menümüzü de bir panele yerlestirirsek arayüzûmüz neredeyse hazir demektir.
Öncelikle bir panel olusturalim. Panelimizin ismi de “tuslar” olsun;
Panel tuslar = new Panel();

Panelimizin rengi de yesil olsun;
tuslar.setBackground(Color.GREEN);

Panelimiz hazir. Simdi komponentlerimizi (tuslar ve seçenek) panelimize ekleyelim:
tuslar.add(ciz);
tuslar.add(sil);
tuslar.add(buyut);
tuslar.add(kucult);
tuslar.add(sekiller);

Tabiî unutmamamiz gereken birsey var; o da, üzerinde komponentlerimizin bulundugu panelimizi asil container’e atmak!
this.add(tuslar,BorderLayout.SOUTH);

“Tuslar” adli panelimizi BorderLayout’un SOUT parametresini kullanarak penceremizin en alt kismina yerlestirdik.

Simdi sira, bütün bu komponentlerin ne ise yarayacagini belirlemeye geldi.
‘ciz’ tusu ile ‘sekiller’ seçenegindeki “kare” ya da “daire”den hangisi seçilmisse onu çizecegiz,
‘sil’ tusu ile ekrandaki sekli silecegiz,
‘buyut’ (+) ile seklin buyumesini, ‘kucult’ (-) ile de kuculmesini saglayacagiz.

Öncelikle JAVA’da herhangi bir sekli çizmemiz için lazim olan yordami çagiralim (daha dogrusu Canvas sinifindan ‘override’ etmeliyiz):
public void paint(Graphics g)
{
    g.setColor(Color.red);

    if (sekiller.getSelectedItem().equals("kare")) g.fillRect(x1, y1, x2, y2);
    if (sekiller.getSelectedItem().equals("daire")) g.fillOval(x1, y1, x2, y2);

}

Verilen emir çok basit;
“eger ‘sekiller’ seçenegindeki item’in etiketi “kare” ise g.fillRect(x1, y1, x2, y2); islemini yap, yani içi dolu bir kare çiz”,
“eger ‘sekiller’ seçenegindeki item’in etiketi “daire” ise g.fillOval(x1, y1, x2, y2); islemini yap, yani içi dolu bir daire çiz.

Bunlar için kullanacagimiz renk ise kirmizi olarak belirlendi:
g.setColor(Color.red);
Int x1, y1, x2, y2;

Tanimlamasini sinifimizin basinda yerçeklestirdik. Çünkü bize kare ve daire çizmek için 4 tane ‘int’ tipinde degisken lazim oldugunu biliyorduk.
(Bunlardan ilk ikisi sekillerimizin baslangiç koordinati, diger ikisi ise eni-boyu için lazim. Üçgen çizmek istesek daha fazla degiskene ihtiyacimiz olacakti)

Çizim yapmak için kullanacagimiz yordamimiz da hazir olduguna göre, tuslarimizi çalistirmanin zamani geldi.
Tuslara verecegimiz emirler çok basit:
“eger ‘ciz’ etiketli tusa basilirsa koordinatlari verilen sekli çiz”
“eger ‘sil’ etiketli tusa basilirsa x2, y2 (en-boy) degiskenlerini sifir yap ki sekil görünmeyecek kadar küçük olsun”
“eger  ‘+’ etiketli tusa basilirsa x2,y2 (en-boy) degerlerini arttir”
“eger ‘-‘ etiketli tusa basilirsa x2,y2 degerlerini azalt”

Simdi sira bunlari makine dilinde yazmaya geldi; fakat buraya dikkat, bu kodlari ActionListener interface’inden implemente edecegimiz actionPerformed yordami içine yazmaliyiz. Varligi ActionListener’e bildirilen bir tusa basildiginda bu yordam devreye girer ve verilen emirleri yerine getirir. Simdi kodlari gorelim:
       
public void actionPerformed(ActionEvent e)
{

    if (e.getActionCommand().equals("çiz"))
    {
        x1 = 50; x2 = 10;
        y1 = 50; y2 = 10;
    }

    if (e.getActionCommand().equals("sil"))
    {
        x2 = 0;
        y2 = 0;
    }

    if (e.getActionCommand().equals("+"))
    {
        x2 += 5;
        y2 += 5;
    }
    else if (e.getActionCommand().equals("-"))
    {
        x2 -= 5;
        y2 -= 5;
    }
    repaint();
}

Not: JAVA’da String karsilastirmalari equals(); metodu ile yapilir!

Tuslarin hareketlerinin kontrolunu ayri ayri, tek te kif bloklarina da yaptirabiliriz, hepsini birlestirip if-else kullanarak da yapabiliriz. Burada görmek için her ikisini de yaptik.

 repaint(); metoduna gelince; o da sekli yeni verilen koordinat ve ebata göre tekrar çiziyor. Bu metodu actionPerformed(ActionEvent e); metodu altinda çagirmasaydik yapilan degisiklikleri göremeyecektik.

Bunu da hâllettikten sonra sira geldi ufak ama olmazsa olmaz bir ayrintiya: Penceremizi nasil kapatacagiz?
Java’da bu da kodlar vasitasi ile oluyor (bu bizim uygulamamiz için geçerli).
Iste lazim olan kod:
this.addWindowListener( new WindowAdapter() {
    public void windowClosing(WindowEvent we) {
        System.exit(0);
        }
    });

En son, bütün çarklarin dödügü metodu yani ‘main’ metodunu da yazip, insa ettigimiz penceremizi çagiriyor ve görünür hâle getirmeyi unutmuyoruz:
public static void main(String arg[]){
    new Cizim().setVisible(true);
}

Sanirim simdi bütün taslar yerine oturdu J

Uygulama kodlarimizin tamami:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Cizim extends Frame implements ActionListener
{
    int x1,x2,y1,y2;
    Choice sekiller;
    public Cizim()
    {
        this.setTitle("kare ve daire çizimi");
        this.setSize(400,500);
        this.setLocation(300, 100);
        this.setBackground(Color.BLUE);
       
        Button ciz = new Button("çiz");
        Button sil = new Button("sil");
        Button buyut = new Button("+");
        Button kucult = new Button("-");
       
        ciz.addActionListener(this);
        sil.addActionListener(this);
        buyut.addActionListener(this);
        kucult.addActionListener(this);
       
        sekiller = new Choice();
        sekiller.add("kare");
        sekiller.add("daire");       
       
        Panel tuslar = new Panel();
        tuslar.setBackground(Color.GREEN);
        tuslar.add(ciz);
        tuslar.add(sil);
        tuslar.add(buyut);
        tuslar.add(kucult);
        tuslar.add(sekiller);
       
        this.add(tuslar,BorderLayout.SOUTH);
       
        this.addWindowListener( new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
                }
            });
       
    }
   
    public void actionPerformed(ActionEvent e) {
   
        if(e.getActionCommand().equals("çiz")){
            x1=50; x2=10;
            y1=50; y2=10;
           
        }
       
        if(e.getActionCommand().equals("sil")){
            x2=0;
            y2=0;
           
        }
       
        if(e.getActionCommand().equals("+")){
            x2+=5;
            y2+=5;
            }
            else if(e.getActionCommand().equals("-")){
                x2-=5;
                y2-=5;
                                   
            }
        repaint();
        }         
   
    @Override
    public void paint(Graphics g){               
        g.setColor(Color.red);
       
        if(sekiller.getSelectedItem().equals("kare")) g.fillRect(x1, y1, x2, y2);
        if(sekiller.getSelectedItem().equals("daire")) g.fillOval(x1, y1, x2, y2);
       
    }
       
    public static void main(String arg[]){
        new Cizim().setVisible(true);
    }   
}

Yorumlar

Bu blogdaki popüler yayınlar

JavaScript ile Ziyaretçi Bilgileri Nasil Alinir

Bu makalemizde javascript ile web sayfamizi ziyaret eden kullanicilarin hangi site üzerinden geldigi, kullandigi tarayici bilgisi, ekran çözünürlügü ve Ip adresi gibi bilgileri nasil alacagimizi anlatacagiz. Tarayici Tipini Almak Ziyaretçinin kullandigi tarayici tipini asagidaki javascript kodu ile alabiliriz. function Tarayicitipi() {   alert(navigator.appName); } Tarayici Versiyonunu Almak function Tarayiciversiyon() {   alert(navigator.appVersion); } Ziyaretçinin Hangi Baglantiyi Kullanarak Geldigi Bilgisi (referral bilgisi) Eger ziyaretçi sayfamiza direk olarak degilde bir linki takip ederek geldi ise, geldigi adresi almak için asagidaki kodu kullaniyoruz. Bu sayede arama motorlarin gelen ziyaretçileride bulabilir ve farkli analizler için kullanabiliriz. function ReferrelBilgisi() {    alert(document.referrer); } Ekran Çözünürlügünü Almak function Cozunurluk() {    var w = screen...

GPS'li şapkayla yolunuzu bulmak çok kolay!

Bu ilginç görünümlü şapkayı giydiğinizde, yolunuzu hiç kaybetmeyeceksiniz! Gitmek istediğiniz mekanı bulmak için telefonunuzu cebinizden çıkarmanıza artık gerek yok. Çünkü bu şapka, size yolu tarif edebiliyor, üstelik yalnızca sesle. GPS destekli silindir şapka,  Cornell Üniversitesi  araştırmacıları tarafından geliştirilmiş. Prototip şu an korkunç görünüyor olabilir, ancak onu kullanmak için dil bilmenize bile gerek yok. Şapka, ses tonlarıyla yolunuzu bulmanızı sağladığından elinizi kullanmanıza da gerek kalmıyor. Bu şapkayı yakın bir zamanda satın almanız mümkün olmayacak, ancak teknolojinin navigasyon uygulamalarına uyarlanması faydalı olabilir. Teknoloji görsel ipuçlarıyla çalışmadığından, özellikle görme sorunu yaşayan kullanıcıların işine yarayabilir.

Bilgisayarın Sağlıklı ve Doğru Kullanımı

Bilgisayar genelde oturarak kullanıldığı için uzun süreli kullanımlar vücudumuza zarar verebilmektedir.Yazı yazmak,internet erişimi ya da oyun oynamak için uzun süreli kullanım;başta bel,boyun ve omurgalarımızın sağlığını tehdit eder.Diğer yandan sürekli aynı noktaya bakmak göz sağlığımıza zarar verir.Bu nedenle bilgisayar kullanıcısının oturma pozisyonuna çok dikkat etmesi ve uzun süre çalışmaması gerekir. Bilgisayar Kullanırken Oturma Şekli Önerileri ·         Bilgisayarı,uygun yükseliğe sahip olan masa ve sandalye üzerinde dik oturma konumunda kullanmak gerekir.Klavye ve farenin çok uzakta olmaması gerekir.Oturan kişinin gözü ile bilgisayar arasında 50-60 cm uzaklık olmalıdır.Kollar yatay ve rahat konumda olmalıdır.   ·         Masa yüksekliği yaklaşık 70 cm olmalıdır.Dizüstü bilgisayarlar için yükseltici olarak bilinen altlıklar yararlı olabilir.   ·         Oturma sırasında sırt desteklemeli ve...