24 Aralık 2013 Salı

Java Inheritance(Kalıtım) Uygulaması (Java extends Örneği)


Daha önce katıldığım java programlama kursunda yaptığımız bir (inheritance)kalıtım uygulaması. Programda tanımlanan tüm classlar personel sınıfından extends komutu ile türetilmiştir.

personel.java

import java.util.Locale;

public class personel {
    protected String ad;
    protected String soyad;
    public String tcKimlik;
    private Double sabitMaas=0.0;
   
    public personel(){
       
    }// defalut constructor
    public personel(String persAd,String persSoyad,double persMaas){
        ad=persAd;
        soyad=persSoyad;
        sabitMaas=persMaas;
        }
    public void setAd(String personelAd)// isim formatı:
    {// ad parametresinin sağındaki ve solundaki boşlukları alıp isim StringBuilder nesnesine ata.
        StringBuilder isim = new StringBuilder(personelAd.trim());
        if(isim.length()==0){// eğer isim nesnesinin uzunluğu 0 ise boş isim girilmiştir.
            System.out.println("Ad kısmı boş. Lütfen bir isim giriniz");
            }else{// isim nesnesinin ilk harfi büyük diğerleri küçük olarak şekillendir.
                for(int i=0;i<isim.length();i++){
                    if(i==0) isim.setCharAt(i, Character.toUpperCase(isim.charAt(i)));                   
                    }//for döngüsü sonu
                this.ad=isim.toString();
            }//else sonu
       
    }//setAd metod sonu
    public String getAd(){return this.ad;}
    public void setSoyad(String personelSoyad){
        personelSoyad=personelSoyad.trim();
        if(personelSoyad.length()==0){//soyad kısmının boş olup olmadığı kontrol ediliyor
            System.out.println("Soyad kısmı boş. Lütfen personel soyadını yazınız.");
        }else{// soyisim nesnesinin tümü büyük harf olacak
            this.soyad=personelSoyad.toUpperCase(new Locale("TR"));
        }//else sonu
    }
    public String getSoyad(){
        return soyad;
    }// getSoyad sonu
    final public void setTcKimlik(String tckimlik){
        this.tcKimlik=tckimlik;
    }
    public void setMaas(double maas){
        sabitMaas=maas;
    }
    public double getMaas(){return sabitMaas;}
    public double hakEdis(){
        System.out.print("Personel Hakediş:");
        return sabitMaas;
    }
}// personel classs sonu



SatisPersoneli.java


public class SatisPersoneli extends personel{
    public double satisTutari;
    public double primYuzdesi;
    public SatisPersoneli(){}
    public SatisPersoneli(String ptpAd,String ptpSoyad,double satisTutari,double prim){
        super(ptpAd, ptpSoyad, 500.0);// bu stırda satış personelinin bilgileri personel class'ındaki personel isimli metoda bilgi gönderir.
        this.satisTutari=satisTutari;
        this.primYuzdesi=prim;
    }// SatisPersoneli sonu
    public void setSatistutari(){
        if(satisTutari>=0)
            this.satisTutari=satisTutari;
        else
            System.out.println("tutar pozitif olmalı");
    }// setSatistutari sonu
    @Override
    public double hakEdis(){
        System.out.println("Satıi personeli hakediş:");
        return super.getMaas()+(this.satisTutari*(1+primYuzdesi));
    }

}

PartTimePersonel.java


public class PartTimePersonel extends personel{
    public int mesaiSaat;
    public double saatUcreti;
    public PartTimePersonel(){
        super();
    }
    public PartTimePersonel(String ptpAd,String ptpSoyad, int ptpMesai, double ptpSaatUcret){
        super(ptpAd,ptpSoyad,0.0);
        this.mesaiSaat=ptpMesai;
        this.saatUcreti=ptpSaatUcret;
    }//PartTimePersonel sonu
   
    public void setMesaiSaat(int saat){
        if(saat>=0)
            mesaiSaat=saat;
        else
            System.out.println("Mesai saati pozitif olmalı");
    }
    @Override
    public double hakEdis(){
        System.out.println("Pat Time Personel hakediş :");
        return saatUcreti*mesaiSaat;
    }

}

Stajyer.java


public class Stajyer extends personel{

}

PersonelTakip.java


public class PersonelTakip {
    public static void main(String[] args){
        personel isci,partIsci,stajyerIsci;
        isci = new personel("Kamil","turhan",1000.0);
        partIsci = new PartTimePersonel("Yusuf","eren",45,20.0);
        stajyerIsci = new Stajyer();
        personel satisIsci = new SatisPersoneli("haken","kart",40000.0,0.2);
       
        System.out.println(isci.hakEdis());
        System.out.println(partIsci.hakEdis());
        System.out.println(satisIsci.hakEdis());
    }

}

21 Eylül 2013 Cumartesi

Java Applet Örneği

Aşağıdaki kodlar Applet ortamında bir pencere çizer ve içinde 1 de 10'a kadar olan tamsayıları sıralar. Programda döngüyü kurmak için do-while kodu kullanılmıştır. Bu bakımdan do-while döngüsü için de basit ve açıklayıcı bir örnek olduğu söylenebilir.

import java.awt.Graphics;
import java.applet.Applet;
public class javaApplet1 extends Applet{
    public void paint(Graphics g){
        int sayac=1;
        int x=25;
        String yazi;
        do{
           
            yazi=Integer.toString(sayac);// Bir değişkenin değerini Applet Viewer üzerinde görüntületebilmek için değişken tipinin String'e çevrilmesi gerekir.
            g.drawString(yazi, x, 25);
            x+=15;
            sayac++;
        }while(sayac<=10);
       
    }

}

29 Ağustos 2013 Perşembe

Java'da if Yapısı

Java if kullanımı

Aşağıdaki basit java programı klavyeden girilen değerleri parseDouble metodunu kullanarak double türüne parse edip çevirdikten sonra if komutu ile değerlendirip sonucu görüntüler. Klavyeden JOptionPane ile girilen değerler String türünde saklanır. Bu yüzden eğer bu değerlerle matematiksel işlem yapılacaksa integer, double ya da float türlerine çevrilmesi gerekir. String değerlerin sayısal değerlere çevrilmesi işlemine Java'da parse yapma işlemi denir.


import javax.swing.JOptionPane;

public class ifuygulama {
    public static void main(String args[]){
       
        double ogrenciNot;
       
        not=Double.parseDouble(JOptionPane.showInputDialog("0-100 arası not giriniz:"));
    if(ogrenciNot>=90)
    {JOptionPane.showMessageDialog(null,"A","Öğrenci notu",JOptionPane.PLAIN_MESSAGE);}
    else if(ogrenciNot>=75)
    {JOptionPane.showMessageDialog(null,"B","Öğrenci notu",JOptionPane.PLAIN_MESSAGE);}
    else if(ogrenciNot>=60)
    {JOptionPane.showMessageDialog(null,"C","Öğrenci notu",JOptionPane.PLAIN_MESSAGE);}
    else if(ogrenciNot>=50)
    {JOptionPane.showMessageDialog(null,"D","Öğrenci notu",JOptionPane.PLAIN_MESSAGE);}
    else if(ogrenciNot>=40)
    {JOptionPane.showMessageDialog(null,"E","Öğrenci notu",JOptionPane.PLAIN_MESSAGE);}
    else
    {JOptionPane.showMessageDialog(null,"F","Öğrenci notu",JOptionPane.PLAIN_MESSAGE);}
   
    }

}

26 Mayıs 2013 Pazar

HTML5 Nedir?

HTML5 İle Web Tasarıma Girelim


Nedir HTML5 ?


HTML5 Logo Image
HTML5, temel olarak HTML dilinin yeni standardıdır.

Kim İcat Etti  HTML5'i?

Bu standart World Wide Web Consortium(W3C) ve Web Hypertext Application Technology Working Group (WHATWG)'in ortak çalışmasının sonucu olarak ortaya çıkmıştır.

HTML5'in Getirdiği Yenilikler Nelerdir?

Bu standart HTML CSS DOM ve Javascript teknolojilerinin etkin kullanılmasını temel alarak Web tasarıma hız, etkinlik ve sağlamık getirmiştir.

- HTML5 ile tasarlanan bir sitede etkileşimli grafik animasyon oluşturmak için Java applet ve flash gibi pluginlerin kullanılma zorunluluğu ortadan kalkmıştır.

- Hata ayıklama ve düzeltme sürece daha hızlı ve kolaydır.

- Evelce JavaSript ile yapılabilen bazı işler artık HTML5 tagları ile script kullanmadan browser'a yapıtırılabilir.

- HTML5 ile tasarlanan siteler PC, iPad, TabletPC gibi farklı ortamlarda da çalışabildiğinden taasarım ve üretim süreci kolaylaşmış ve hızlanmıştır.

HTML5 Site Nasıl Tanımlanır?


Bir siteyi HTML5 olarak tanımlamak için HTML kodlarının en başına sadece <!DOCTYPE html> yazmak yeterlidir. Bu tag tarayıcıya sitenin bir HTML5 sitesi olduğunu ve kodların  bu standarda göre yorumlanacağını söyler.

Temel HTML5 sayfa kodlaması ise şu şekildedir:

<!DOCTYPE html>
<html>
        <head>
                  <title>Sayfa Başlığı</title>
        </head>

<body>

Sayfa İçeriği

</body>

</html>

HTML5 ile web tsarım daha esnek ve zevkli bir hale geldi. Özellikle Javascriptle 2D, 3D animasyonlar üretmek de dahil pek çok yeteneği olan <canvas> elemanı Front-End Developer'ların gözdesi olacak.

24 Mayıs 2013 Cuma

HTML5 Destekli Tagların Listesi


HTML5 Teknolojisi'nin Desteklediği Tüm Tag'lar

HTML5 Web dünyasının yeni standardı... HTML5 teknolojisi ile artık daha canlı ve daha güzel. HTML5 World Wide Web Consortium (W3C) ve Web Hypertext Application Technology Working Group (WHATWG)'unun ortak çalışmasının bir ürünüdür. Bu standat ile birlite web sayfalarına canlılık getiren yeni taglar tanımlanmış ve artık web tasarımda pek kullanılmayan bazı taglar yürürlülükten kaldırılmıştır.

HTML5'in desteklemediği taglar:

HTML5 standardı, <acronym>, <applet>, <basefont>, <big>, <center>, <dir>, <font>, <frame>, <frameset>, <noframes>, <strike> ve <tt> taglarını artık desteklememektedir.

HTML5 ile gelen yeni taglar:
<article>, <aside>, <basefont>, <audio>, <bdi>, <canvas>, <command>, <datalist>, <details>, <dialog>, <embed>, <figure>, <figcaption>, <footer>, <header>. <hgroup>, <keygen>, <mark>, <meter>, <nav>, <output>, <progress>, <rp>, <rt>, <ruby>, <section>, <source>, <summary>, <time>, <track>, <video> ve <wbr> taglarıdır.


HTML5'in desteklediği tagları ve ne işe yaradıklarını aşağıda sıralıyorum umarım hepimiz için aydınlatıcı bir HTML5 referansı olur.



<!--...--> : Yorum satırı tanımlar

<!DOCTYPE > : Doküman tipini tanımlar

<a> : Bağlantı oluşturur

<abbr> : Kısaltma yapmak için kullanılır (HTML, XML, WYSIWYG gibi)

<address > : Belgeye iletişim ya da site sahibi ile ilgili blgileri koymak için kullanılır

<area> : image-map içinde bir alan tanımlar

<article> : Makale görüntülemek için bir alan tanımlar

<aside> : Sayfa içeriği içinde bir bölüm tanımlar

<audio> : Ses içeriği oluşturur

<b> : Yazıyı kalın yapar

<base> : Sayfa içinde tanımlanan URL'ler için bir temel adres tanımlar

<bdi> : çift yönlü yazı alanı tanımlar

<bdo> : Yazı yönünü ters çevirir

<blockquote > : Alıntı yaparken kullanılır

<body> : Tüm Döküman içeriğini kapsayan temel tag

<br> : Bir satır boşluk bırakır

<button> : Bir düğme oluşturur

<canvas> : Script ile kontrol edilebilen bi grafik çizim alanı tanımlar

<caption> : Table elemanı için başlık tanımlar

<cite> : İtalik başlık tanımlar

<code> : Metne bilgisayar kodu formatı verir

<col> : <col> elemanı ile birllikte tablo sütunlarını özelleştirmek için kullanılır

<colgroup> : Tablo sütunlarını formatlar

<command> : Bir buton oluşturur(Browserlar desteklemiyor şimdilik)

<datalist> : Kendinden filtreli açılır liste elemanı


<dd> : Definition list için bir eleman tanımlar.

<del> : Metin üzerine çizgi çizer.

<details> : Metin üzerine tıklandığında gizlenmiş olan diğer bir metinin görünmesini sağlar.

<dfn> : Metni İtalik yapar

<dialog> : Kutucuk görüntüler

<div> : Sayfada bir bölüm oluşturur

<dl> : Definition list tanımlar

<dt> : Definition list için bir eleman tanımlar.

<em> : Eğik yazı oluşturur

<embed> : HTML dışı uygulamaları (swf gibi) çalıştıran bir alan tanımlar

<fieldset> : form içindeki elemanları sarmak için kullanılır.

<figcaption> : <figure> elemanı içine başlık metni tanımlamada kullanılır.

<figure> : İçeriği sarmalar. Kendine özgü margin değeri vardır. içine yazdığınız içeriği sayfa elemanlarından ayırır.

<footer> : Sayfada CSS kullanmadan footer oluşturur

<form> : Form alanı oluşturur

<h1>, <h2>, <h3>, <h4>, <h5>, <h6> : Sayfaya başlık metni eklerler Sayı değeri büyüdükçe başlığın puntosu küçülür.

<head> :  Sayfada üst kısımda özel bilgi alanı oluşturut burdaki içeriği kullanıcılar görmez.

<header> : Sayfaya CSS kullanmadan header kısmı ekler

<hgroup> : <h1>, <h2>, <h3>, <h4>, <h5>, <h6> elemanlarını gruplar.

<hr> : Sayfaya yatay çizgi çizer.

<html> : HTML sayfasının kök elemanı. tüm içeriği kapsar

<i> : İtalik metin oluşturur

<iframe> : ifame nesnesi oluşturur(iframe içinde başka bir web sayfası görüntülenir)

<img> : Resim eklemek için kullanılır.

<input> : Buton metin kutusu gibi form elemanlarını tanımlamak için kullanılır

<ins> : Metnin altını çizen HTML tagı

<kbd> : metin alanı tanımlar

<keygen> : formlarda kullanılır şifrelemek için kullanılır

<label> : input elemanlarını etiketlemek için kullanılır

<legend> : <fieldset> ile tanımlanan elemanlara başlık oluşturur.

<li> : Liste elemanı tanımlar

<lik> : HTML dokumanına stil ya da script dosyaları bağlamak için kullanılır

<map> : Özellikle resim elemanlarında özel bölgeler tanımlamak için kullanılır.

<mark> : Metni işaretlemek için kullanılır.

<menu> : command elemanlarının listelenmesinde oluşan bir menü tanımlar şu anlık browser desteği yok

<meta> : Web sayfaları için üst veri tanımlar

<meter> : Web sayfası içinde progressbar benzeri bir eleman tanımlar ,nernet explorer desteği yok

<nav> : CSS kullanmadan navigasyon menüsü oluşturur

<noscript> : Browser Javascript desteklemediğinde uyarı mesajı çıkarmak için kullanılır

<object> : Sayfa içinde gömülü olarak .swf gibi nesneleri görüntülemek için kullanılır

<ol> : sayfaya 1, 2, 3 gibi sıralı liste eklemek için kullanılır

<optgroup> : açılır menu elemenlarını gruplamak için kullanılır.

<option> : Açılır menuye eleman eklemek için kullanılır

<output> : Hesaplama sonucunu görüntülemek için kullanılır.

<p> : Sayfaya paragraf eklemek için kullnılan HTML tagı

<param> : Object nesnesi için parametre tanımlar

<pre> : Önceden biçimlendirilmiş bir metin tanımlar

<progress> : Sayfaya bir progress bar eklemek için kullanılan HTML kodu

<q> : metne çifttırnak ekler

<rp> : Browser ruby kodlarını desteklemediğinde görüntülenecek metni tanımlar

<rt> : Özel karakter gösterilmesini sağlar

<ruby> : ruby yazılarını gösterir

<s> : Metni üstü çizili yapar

<samp> : metin düzenler

<script> : Kullnıcı tarafında çalışan script kodlarını eklemek için kullanılır

<section> : Dokumanda bir bölge tanımlar

<select> : Açılır menu tanımlar

<small> : Metni küçültür

<source> : Media elemanları için kaynak tanımlar

<span> : HTML dökümanı içinde satır cinsinden bir alan tanımlar

<strong> : Metni kalın yapar

<style> : CSS tanımlar

<sub> : Satır altı metin oluşturur

<summary> : HTML dokumanında özet alanı öluşturur

<sup> : Satırüstü metin oluşturur

<table> : Tablo tanımlar

<tbody> : Tablo elemanlarını gruplar

<td> : Tabloda bir hücre tanımlar

<textarea> : HTML form içinde çok satırlı metin giriş elemanı tanımlar

<tfoot> :  Tablonun footer elemanların gruplar

<th> : Başlık biçiminde tablo hücre elemanları oluşturur

<thead> : Tablo başlık elemanlarını gruplar

<time> HTML dokumanında zaman bilgisi göstermek için kullanılır

<title> : HTML dokumanının başlık çubuğuna yazı yazmak için kullanılır

<tr> : tabloya satır elemanı eklemek için kullanılan HTML kodu

<u> : metnin altını çizmek için kullanılan HTML tagı

<var> : Eğik yazı oluşturur

<video> : HTML sayfasına video  eklemek için kullanılan HTML5 tagı

<wbr> : Satır sonu tanımlar

7 Mayıs 2013 Salı

JavaScript Saat Kodları

 JavaScript ile dijital saat yapımı.


http://www.w3schools.com da bulduğum basit ama öğretici bir Javascript uygulaması. Basit olduğuna bakmayın o sitede Advanced Examples kategorisinde bulunuyor. Yani aslında bu çalışma ileri düzeyde bir JavaScript uygulaması. siteden aldığım kodları blogger'da çalışacak şekilde düzenledim ve konunun daha iyi anlaşılabilmesi için kodları Türkçeleştirmeye çalışıtm. Kodların orijinallinde saati çalıştıran fonksion body tag'ı içine onload="saatim()" yazılarak çalıştırılıyordu ben onu scriptin içine aldım. Eğer fonksiyonu onload parametresiyle çalıştıracaksanız script içindeki saatim();  yazan satırı silin ve turuncu renklli parametreyi body tagına yerleştirin. Bu durumda scripti de head taglarinin arasına yerleştirmelisiniz. Yerleştirmeyi bu şekilde yaptığınızda web sayfanız yüklendiği zaman saatim() fonksiyonu otomatik olarak çalışacak ve web tarayıcınız fonksiyon kodlarına bağlı olarak sayfa içinde id değeri saat olan HTML elamanlarını arayacak ve bulduklarının içine o anki zamanı saat, dakika ve saniye olarak yazacaktır.

Aşağıdaki kodlamada ise durum biraz farklı. Öncelikle saati yazdırmak istediğim id'si saat olan bir HTML elemanı oluşturdum. Sonra da altına Javascirpt kodlarını yerleştirdim. Burada sıralama önemli. Bir javascript kodunu sayfa içinde kullanacaksanız mutlaka etki edeceği elemanların altına yazmalısınız. Unutmayın web tarayıcınız da aynı sizin gibi kodları yukardan aşağı okur. Eğer HTML elemanını kodun altına yazarsanız browser fonksiyonu başlatan kodu bulamaz ve programınız çalışmaz(eleman içine onload parametresi yazabilirsiniz ama herzaman sağlıklı çalışmaz, önermiyorum). JavaScript programları, elemana tıklama veya yükleme sayfa olaylarının tetiklemesiyle çalışır. Kodlama yaparken bunu göz önüne almalısınız. Aşağıdaki kodlamada hangi elemanın ne iş yaptığını kısaca anlatmaya çalıştım umarım yararlı olur.

<div id="saat"></div> // saati göstereceğim HTML elemanı
<script type="text/javascript">
saatim(); // saatim fonksiyonu çağırılıyor
function saatim() // fonksiyon başlangıcı
{
var zaman=new Date(); // zaman isimli bir Date nesnesi oluşturuluyor.
var sa=zaman.getHours();// zaman nesnesinden getHours metoduyla saat bilgisi bir değişkene aktarılıyor
var da=zaman.getMinutes(); // aynı işlem getMinutes ile dakika için yapılıyor
var sn=zaman.getSeconds(); // yine saniye bilgisi için getSeconds medodu kullanılıyor

// buraya kadar kullanılan getHours, getMinutes ve getSeconds metodları JavaScript'tin standart metdolarıdır.

da=zamanAyarla(da);
sn=zamanAyarla(sn);

// Yukarıdaki iki satırda çift haneli gösterim yapmak için dakika ve saniye değerleri zamanAyarla fonksiyonuna gönderiliyor. fonksiyon kendisine gelen sayı 10 dan küçükse bu değerin önüne bir sıfır ekleyip  geri döndürüyor
document.getElementById('saat').innerHTML=sa+":"+da+":"+sn; // id değeri saat olan HTML nesnesini içine sa, da ve sn değişkenlerinin değerlerini yazıyor
setTimeout("saatim()",1000); //Her 1000ms(1saniye) de bir saatim() fonskiyonunu çalıştıran standart JavaScript fonkisyonu burası saatin gerçek bir saat gibi her saniye değer değiştirmesini sağlıyor.
}

function zamanAyarla(i) // i parametresiyle bir değer alarak fonksiyon başlar
{
if (i<10) // koşul inceleniyor i 10 dan küçükse hemen alt satırdaki işlemler yapılacak. i 10 dan büyükse doğrudan return satırına gidilecek
  {
  i="0" + i; // i değerinin önüne 0 ekleniyor(String değer, JavaScript'te değişkenler için tip koruması yoktur)
  }
return i; // bu fonksiyon işlemleri sonucunda elde edilen değer fonksiyonun çağırıldığı yere geri döndürülüyor.
}
</script>

Şayet kodlamaları doğru yaptıysak saatimiz aşağıdaki gibi çalışacaktır. Ben sadece CSS ile biraz görünümünü değiştirdim. Siz de kendi CSS tasarımınızı uygulayabilirsiniz.

Yorumlarınızı Bekliyorum

28 Nisan 2013 Pazar

Java Notları-4- Wrapper Nedir?

İlkel(primitive) veri tipleri olan int, float, short, long ve double, Java programlarının daha performanslı çalışabilmeleri için nesne olarak tanımlanmamışlardır. Buna karşın primitive tiplerin herbiri için oluşturulmuş birer Java sınıfı da mevcuttur. Java'da bu sınıflara Wrapper Class denir. Wrapper sınıflarına bir örnek:


public class ornek {
    public static void main(String[] args){
        String yazi="125";
        int sayi;
        Integer i = new Integer(5); /*wrapper class tanımı, i değişkeni Integer tipinde tanımlanıyor ve 5 değeri atanıyor*/
        sayi=Integer.parseInt(yazi); // String tipindeki bir değişkenin Integer tipine parse edilmesi
       
        System.out.println(sayi);
        System.out.println(yazi);
        System.out.println(i);
    }

}

Programın çıktısı ise şu şekildedir:

Java Wrapper Class

27 Nisan 2013 Cumartesi

Java Notları-3-Ondalıklı Sayı Değişkenleri

double ve float tipinde tanımlanmış değişkenler diğer programlama dillerinde olduğu gibi Java dilinde de ondalıklı sayıları bellekte tutmak için kullanılır.

float değişken tipi virgülden sonra 7 haneye kadar duyarlıdır. 32 bitlik veri tutar.

double değişken tipi virgülden sonra 17 haneye kadar duyarlıdır. 64 bitlik veri tutar.

25 Nisan 2013 Perşembe

Java Notları-2-Tam Sayı Değişkenleri

Java'da tam sayı değişkenleri int, byte, long ve short tiplerinde tanımlanabilirler. Bu değişkenlerin özellikleri aşağıdaki tabloda verilmiştir.

Değişken TürüTürkçesiBellekte Kapladığı AlanSınır Değerleri
intTam Sayı Değişkeni32bit-2157483648 ile 2147483647 arası
byteTam Sayı Değişkeni8bit-128 ile 127 arası
shortTam Sayı Değişkeni16bit-32768 ile 32767 arası
longTam Sayı Değişkeni64bit-9223372036854775808 ile
9223372036854775808 arası

Java Notları-1-Merhaba Dünya Programı

Konsol ekranına Merhaba Dünya yazdıran Java programı

selam.java kodları:

public class selam {
    public static void main(String[] args){
        System.out.println("Merhaba Dünya");
       
    }

}

Programın Eclipse ortamında Console çıktısı aşağıdaki gibidir.

Merhaba Dünya Java Programı

26 Mart 2013 Salı

Java GUI Örnek 1 (Java JFrame)

Java ile görsel programlama örnek 1


Java ile GUI(Graphical User Interface-Grafiksel Kullanıcı Arayüzü) çalışmalarımıza boş bir çerçeve oluşturarak başlıyoruz. Aşağıdaki kısa java programı ekranın sol üst köşesine başlığı "İlk Çerçevem" olan boş bir çerçeve çizdirir.

Bu ilk örek GUI uygulamamızı kısaca incelersek;

import javax.swing.JFrame; //JFrame sınıfı uygulamaya import ediliyor


public class main {

    public static void main(String[] args) {
        JFrame cerceve = new JFrame();// cerceve isimli JFrame nesnesi oluşturuluyor.
        cerceve.setTitle("İlk Çerçevem");// çerçevenin başlığı belirleniyor.
        cerceve.setSize(350, 300);// çerçevenin boyutları belirleniyor.
        cerceve.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// çarpıya basıldığında çerçeve ile birlikte programı da kapatan kod
        cerceve.setVisible(true);//çerçeveyi görünür kılan kod
       

    }

}

Örnek JFrame UygulamasıBu basit GUI örneğinin ekran görüntüsü sağ tarafta görüldüğü gibi boş bir pencere olmalıdır.










-Turgut ARSLAN-

28 Ocak 2013 Pazartesi

Java Docs Türkçe Package java.applet


Package java.applet

Bir applet ve appletin context'ini kullanan classları oluşturmak gerekli class'ları sağlar.

Applet framework'u iki temel unsurdan oluşur: applet ve applet context'i. Applet birkaç tane özel method ile başlatılabilen, çalıştırılabilen ve durdurulabilen bir gömülebilir penceredir.

Applet contexti appletlerin yüklenmesinden çalışmasından sorumlu bir uygulamadır. Mesela applet context'i bir web tarayıcısı ya da bir uygulama geliştirme ortamı olabilir.

Interface AppletContext

public interface AppletContext

Bu ​​Interface(arayüz) applet'in içinde bulunduğu ortama bağlıdır.

Bu arayüz yöntemler ortamı hakkında bilgi elde etmek için bir applet tarafından kullanılabilir.

Interface AppletContext Methodları:


getAudioClip


AudioClip getAudioClip(URL url)

Bir ses klibi oluştutur.

Parameters:
url - ses klibinin konumunu veren mutlak URL.
Returns:
Belirtilen URL adresindeki ses klibini verir.

getImage


Image getImage(URL url)

Ekranda görüntülenebilen bir Image nesnesini getirir. url argümanı kesin bir URL adresi ile belirtilmelidir.

Bu method resim olsa da olmasada daima bir sonuç döndürür.Applet ekrana bir resim çizmeye başladığında veriler yüklenecektir.Grafik parçaları ekrana aşamalı olarak çizilecektir.

Parameters:
url - Resmin kesin adresini veren URL.
Returns:
URL ile belirtilen resim.

getApplet


Applet getApplet(String name)

Belge içinde applet context'inde verilen isimle temsil edilen appleti bulur ve getitrir. İsim HTML tagının içinde name özelliğiyle ayarlanabilir.

Parameters:
name - bir applet ismi.
Returns:
isimle aranan appleti verir. Bulamazsa null değer döndürür.

getApplets


Enumeration<Applet> getApplets()

Bu applet contexti ile temsil edilen tüm appletleri bulur.

Returns:
İlgili applet contextinde belirtilen tüm appletleri numaralandırır.

showDocument


void showDocument(URL url)

url argümanı ile belirtilen tarayıcı ya da aplet viewerin isted ği Web sayfasını gösterir. Web sayfasında hangi frame ya da pencerenin görüntüleneceğini web tarayıcı ya da applet viewer belirler. Bu method applet context tarafından yoksayılailir ancak bu durum tarayıcılar için aynı değildir.

Parameters:
url - Belgenin konumunu veren mutlak URL.


showStatus


void showStatus(String status)

Bir string argumanı ile görüntülenen durum penceresini ister. Çoğu browser ve applet viewer böyle bir pencereyi sağlar, where the application can inform users of its current state.

Parameters:
status - a string to display in the status window.

setStream


void setStream(String key,
InputStream stream)
throws IOException

Aplet context'i içinde yazılan key ile stream'i birleştirir.  Eğer applet context'i önceden bu key için bir eşleşme içeriyorsa bu değer yenisi ile yer değiştirir.

Güvenlik sebebiyle stream'ların ve key'lerin herbirinin eşleşmesi  kod tabanında(codebase) gerçekleşir.Diğer bir deyişle  kod tabanındaki bir applet başka bir kod tabanındaki bir applet tarafından oluşturulan  oluşturulan stream'e erişemez.

Parametreler:
key - belirtilen değerle ilişkili olan anahtar kelimedir..
stream - belirli bir key ile birleştirilen akım(veri akışı). Eğer bu parametre null değerdeyse(boşsa), belirtilen key applet context'inden çıkarılır .

Throws:
IOException - Eğer stream(veri akışı) belirli bir boyut limitini aşarsa. Boyut limiti bu interface ya da implementor tarafından belirlenir.
IOException

Bu metod Java 1.4 ten itaibaren kullanıma sunulmuştur.

getStream


InputStream getStream(String key)


Applet context'inde belirtilen keyle ilişkili stream'i döndürür. Eğer applet context'i bu key için bir stream içermiyorsa metod null değeri döndürür.

Güvenlik sebebiyle stream'ların ve key'lerin herbirinin eşleşmesi  kod tabanında(codebase) gerçekleşir.Diğer bir deyişle  kod tabanındaki bir applet başka bir kod tabanındaki bir applet tarafından oluşturulan  oluşturulan stream'e erişemez.

Parametreler:
key - döndürülecek olan stream ile ilişkilidir.
Döndürdüğü Değer:
Applet context'ineki key ile uyumlu stream

Bu metod Java 1.4 ten itaibaren kullanıma sunulmuştur.

getStreamKeys


Iterator getStreamKeys()

Applet context'indeki streamlere ait tüm keyleri bulur.


Güvenlik sebebiyle stream'ların ve key'lerin herbirinin eşleşmesi  kod tabanında(codebase) gerçekleşir.Diğer bir deyişle  kod tabanındaki bir applet başka bir kod tabanındaki bir applet tarafından oluşturulan  oluşturulan stream'e erişemez.


Döndürdüğü Değer:
Applet context'indeki tüm stream isimleri için bir Iterator(yineleyici) döndürür..

4 Ocak 2013 Cuma

Android SDK Tools Güncelleme Sorunu [ÇÖZÜM]

Android SDK Tools Güncellenmiyor

Warning! the following processes: -cmd.exe -java.exe are locking the following directory ................  Please close theese aplications so that the istallation can contnue. When ready, press Yes to try again

 ECLIPSE ortamında Android SDK Toollarını güncellediğinizde, SDK Manager tools klasörünü güncellerken aşağıda sıralı hata mesajlarını alırsınız.

"Warning! the following processes: -cmd.exe -java.exe are locking the following directory ................
Please close theese aplications so that the istallation can contnue. When ready, press Yes to try again."

"Installing Android SDK Tools revision 21.01
Failed to rename directory...."
Hata mesajında özetle;  tools klasörünüzün cmd.exe ve java.exe dosyaları tarafından kullanıldığı için yenisiyle değiştirilemediği, bu işlemlerin yapılabilmesi için bu iki programın kapatılması gerektiğinden bahsedilmektedir.

Burada problem  Görev yöneticisini açıp bu iki dosyayı "İşlemi Sonlandır" diyerek kapattığımızda ortaya çıkar. Çünkü bu programlar aslında SDK Manager'ı çalıştırmaktadır.Sonuç olarak onları kaptattığınızda SDK Manager de kaapanaağı için tools klasörü güncelleme girişiminiz başarısızlıkla sonuçlanır.

Şimdi hemen aklınıza Android SDK dosyalarını silip en son sürümlerini indirerek herşeye baştan başlamak gelebilir. Doğrudur. O şekilde de sonuca ulaşabilirsiniz. Ancak bunu yapmanın daha kolay bir yolu var.

SDK Manager güncelleme yaparken gerekli dosyaları sıkıştırılmış olarak temp klasörüne indirir ve sonra bilgisayarda yüklü olan dosyaları yeni indirdikleri ile değiştirir. En son olarak da temp klasörünün içini boşaltır. Bu şekilde güncelleme yapılmış olur. Biz Android SDK Tools'u güncellemek istediğimizde de bu işlemi SDK Manager'in yüklü olduğu klasör altında bulunan "tools" klasörü için yapmak ister.   Ancak bu klasör SDK tarafından kullanıldığından işlem başarısız olur. İşlem başarısız olduğu için "temp" klasörüne indirilmiş olan zipli dosya silnmez. İşte  size sorunun 3 Adımda çözümü,

Android SDK Manager Tools Klasörünün Güncellenmesi

1. Adım : İlk önce ECLIPSE ve Android SDK Manager'ı kapatın.
2. Adım : Android SDK Manager'ın yüklü olduğu klasörü açın ve "tools" klasörünü silin. merak etmeyin o klsörü bir daha özlemeyeceksiniz.
3.Adım :"temp"klasörü içindeki zipli dosyayı açın ve içinden çıkan "tools" klasörünü eskisinin yerine kopyalayın.

Hepsi bu kadar. Artık rahatlıkla ECLIPSE ve Android SDK Manager'i kullanabilirsiniz. Böylelikle eskisini silmeden sisteminiz güncellenmiş olur. daha önce yapığınız çalışmaları da kaybetme riskiniz ortadan kalkar.

Not: 2. Adımda "tools" klasörünü silin dedim ya. Siz bana bakmayın bilgisayar dünyasında her zaman işinizi sağlama alın. o klasörü bir yere kopyalayın. Güncelleme işlemi başarı ile gerçekleştiği zaman silersiniz. 

Kolay gelsin hepinize. İyi Çalışmalar... Saygılar vs vs


Turgut Arslan