Česky   |  Deutsch   |  English   |  Español   |  Français   |  Indonesia   |  日本語   |  한글   |  Polski   |  Português (BR)   |  Türkçe   |  中文   |  正體中文   |  Your Language  
PlanetNetbeans
NetBeans Gezegeni Blogosferde yer alan NetBeans ile alakalı içerikleri bir araya getirmek üzere oluşturulmuştur.
Takip Edin
[RSS 1.0 Feed] [RSS 2.0 Feed]
[FOAF Subscriptions] [OPML Subscriptions]
NetBeans hakkında günlük mü tutuyorsunuz? NetBeans Gezegenine günlüğünüzü ekleyin.
Üyeler

Powered by:    Planet

Last updated:
July 02, 2009 10:53 PM
All times are UTC

sponsored by Sun Microsystems

visit NetBeans website
Sekkaşı'nın Bayırı - June 24, 2009 06:12 PM
Java Dersleri 7 - Çok Biçimlilik (Polymorphism)

Bu dersimizde Java’nın nesne odaklı programlamanın olmazsa olmazlarından çok biçimliliği nasıl gerçeklediğini öğreneceğiz. Çok biçimlilik aynı tip değişken üzerinden birbirinden farklı davranışlar elde etme tekniğidir. Programlama dillerinin dinamik bağlama (dynamic binding) yada koşum zamanı bağlama (runtime binding) özelliğinden faydalanılarak hayata geçirilir. Tabiki dinamik bağlamadan yararlanabilme için metod ezme (method overriding) tekniğini bilmemiz gerekiyor. Öncelikle bahsettiğimiz terimleri örneklerle açıklayalım. Metod ezme işlemi kalıtım esnasında ana sınıfta halihazırda tanımlı olan methodu yeniden yazarak ana sınıftaki metodu geçersiz kılma işlemidir. Örneğin :

public class KMeansCluster {

    public String toString()
    {
        return "KMeansCluster";
    }
}

yukarıdaki kod parçasında KMeansCluster sınıfı varsayılan ana sınıfı olan Object (Java’da her sınıf Object sınıfından türer)
sınıfının toString metodunu ezmiştir. Bu metod KMeansCluster cinsinden herhangi bir nesnenin print() metodlarından herhangi birine verildiği zaman çalışır yani :

KMeansCluster kmc = new KMeansCluster();
System.out.print(kmc);

satırları ekrana KMeansCluster yazacaktır. Burada dikkat etmemiz gereken iki temel nokta var :

  1. Ezdiğimiz metodların imzaları aynı olmalıdır. Metod imzası ise metod adı, metod parametre sayısı ve metod parametre tiplerinden oluşur.
  2. static tanımlanan metodlar ezilemezler

Dİnamik bağlama referans tiplerinin derleme zamanında değil de çalışma zamanında atanması esasında dayanır. Bir örnekle açıklarsak :

public class ClusteringBase
{
    public void cluster()
   {
           System.out.println("Cluster Base");
   }
}

public class KMeansClustering extends ClusteringBase
{
    public void cluster()
   {
           System.out.println("KMeansClustering");
   }
}

public class HierarchicalClustering extends ClusteringBase
{
    public void cluster()
   {
           System.out.println("HierarchicalClustering");
   }
}

Yukarıda bir tane ana sınıf (ClusteringBase) iki tane de bu ana sınıftan türeyen alt sınıf tanımladık(KMeansClustering,HierarchicalClustering). Alt sınıflarda cluster(kümeleme) metodunu ezdik. Şimdi bu sınıfları kullanarak çok biçimlilik esasına göz atalım :

ClusteringBase cluster1 = new ClusteringBase();
ClusteringBase cluster2 = new KMeansClustering();
ClusteringBase cluster3 = new HierarchicalClustering();

cluster1.cluster();
cluster2.cluster();
cluster3.cluster();

Buradaki

ClusteringBase cluster2 = new KMeansClustering();
ClusteringBase cluster3 = new HierarchicalClustering();

ifadeleri kalıtım kuralları çerçevesinde doğrudur. Yani bir üst sınıf referansına alt sınıf referansı atanabilir(Tersi yanlıştır).
Dikkat etmemiz gereken kısım üst sınıf referansıyla yapılam cluster() metod çağrımlarıdır. Burada referans tipi her ne kadar
üst sınıf olan ClusteringBase tipinde olsa da çağrılan metodlar çalışma zamanında (runtime) belirlenerek ilgili alt sınıfların metodlarının çağırımı sağlanır. Yukarıdaki kod parçası :

ClusterBase
KMeansClustering
HierarchicalClustering

çıktısını verir. Çok biçimliliğin yazılımcıya sağladığı en büyük avantaj farklı türden nesneleri ana sınıflarını baz alarak aynı ortamda yönetebilme ve gerektiğinde özel fonksiyonaliteyi tekrar kazanabilme avantajıdır.

İlgili Yazılar:

  1. Java Dersleri 5 - Kalıtım (Inheritance) Bu derste Java’nın nesne yönelimli programlamanın temeli olan kalıtım(Inheritance) kavramını...
  2. Java Dersleri 6 - Arayüzler ve Gerçeklenmesi (Interface and Implementation) Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir...
  3. Java Dersleri 4 - Erişim Denetleyicileri (Access Modifiers) Bu dersimizde Java’nın metodlar ve sınıflar üzerinde erişim kurallarını düzenleyen...

Sekkaşı'nın Bayırı - June 18, 2009 10:11 PM
K-Orta Kümeleme Algoritması

screenshot-k-orta-kumeleme-algoritmasi

Algoritma Adı: K-Orta Kümeleme Algoritması(K-Means Clustering)
Algoritma Türü: Kümeleme Algoritması
Açıklama: K-Orta kümeleme algoritması varolan veriyi K nokta etrafında toplamaya yarar.
Bu algoritmada önemli olan veriler arası yakınlık-uzaklık tanımlamasıdır. Örneğin iki boyutlu yada üç boyutlu nokta verilerinin benzerliğini geometrik olarak hesaplayabilirken iki renk arasındaki benzerlik bağıntısını kurmak tamamen kullanıcıya bağlıdır. İlk olarak rastgele belirlenen küme orta noktaları her iterasyonda yeniden hesaplanarak yer değiştirir. Algoritma verilerin kümelerde sabitlenmesiyle sona erer.
Note: There is a file embedded within this post, please visit this post to download the file.

İlgili Yazılar:

  1. Seçim Sıralama(Selection Sort) Algoritma Appleti Algoritma Adı: Seçim Sıralama Algoritması(Selection Sort) Algoritma Türü: Sıralama Algoritması...
  2. Kabarcık Sıralama (Bubble Sort ) Algoritma Appleti Algoritma Adı: Kabarcık Sıralama Algoritması (Bubble Sort) Algoritma Türü: Sıralama...

Sekkaşı'nın Bayırı - May 06, 2009 09:10 AM
NetBeans Yerelleştirmesi İçin Gönüllüler Aranıyor

NetBeans 6.7 versiyonunu İngilizce bilmeyenlerin de kullanabilmesi amacıyla Türkçeleştirmeye çalışıyoruz. Bu konuda çeviri ve test başta olmak üzere her türlü desteğe ihtiyacımız var. Çevirilere ben de el atmak istiyorum derseniz benimle orhanbalci@gmail.com adresinden iletişime geçebilirsiniz.

İlgili Yazı Yok.

Sekkaşı'nın Bayırı - May 05, 2009 06:19 PM
Java Dersleri 6 - Arayüzler ve Gerçeklenmesi (Interface and Implementation)

Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir başka deyimle arayüzler sınıflar arası iletişimde imzalanan kontratlardır. Bir arayüzü gerçekleyen sınıf o arayüze ait metodların tamamını gerçeklemek zorundadır. Java prensip olarak çoklu mirası desteklememektedir. Bunun yerine ise çoklu arayüzleri gerçekleme imkanı sağlamıştır. Arayüzleri tanımlamak için “interface” anahtar kelimesi kullanılır.

Örnek bir arayüz tanımı :

public interface IDatabaseConnection {

   public void initConnection(String databaseName, String userName,
	    String password) throws SQLException;

    public void destroyConnection() throws SQLException;

    public Connection getConnection();
}

Arayüzler “interface” anahtar kelimesiyle tanımlanırken herhangi bir sınıf belirli bir arayüzü gerçekleyeceğini “implements” anahtar kelimesiyle bildirir. Şimdi yukarıdaki arayüzü gerçekleyen sınıfa bir gözatalım :

public class MYSQLDatabaseConnection implements IDatabaseConnection {

	private Connection mysqlConnection;

	public MYSQLDatabaseConnection() {
	}

	public void initConnection(String databaseName, String userName,
			String password) throws SQLException {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException ex) {
			ex.printStackTrace();
		}
		mysqlConnection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/"
				+ databaseName, userName, password);
		mysqlConnection.setEncoding("utf8");
		mysqlConnection.setCharacterEncoding("utf8");
		mysqlConnection.setUseUnicode(true);

	}

	public Connection getConnection() {
		return mysqlConnection;
	}

	public void destroyConnection() throws SQLException {
		if (mysqlConnection != null)
			mysqlConnection.close();

	}

}

Burada dikkat etmemiz gereken hususlar şunlardır:

  1. Arayüz tanımıdaki metodlar public veya default erişim seviyesinde olabilir.
  2. Arayüz kendisi public veya default erişim seviyesinde olabilir.
  3. Arayüzlerde sadece final sınıf değişkeni tanımlanabilir.
  4. Bir sınıf sadece bir sınıftan miras alabilirken, birden fazla arayüzü gerçekleyebilir.
  5. Arayüz ile bu arayüzü gerçekleyen sınıf arasında mirastakine benzer bir ilişki vardır(is-a relationship).
    IDatabaseConnection dc = new MYSQLDatabaseConnection();
    

    kullanımı doğrudur.

  6. Arayüzler birbirinden miras alabilirler.

İlgili Yazılar:

  1. Java Dersleri 4 - Erişim Denetleyicileri (Access Modifiers) Bu dersimizde Java’nın metodlar ve sınıflar üzerinde erişim kurallarını düzenleyen...
  2. Java Dersleri 5 - Kalıtım (Inheritance) Bu derste Java’nın nesne yönelimli programlamanın temeli olan kalıtım(Inheritance) kavramını...
  3. Java Dersleri 7 - Çok Biçimlilik (Polymorphism) Bu dersimizde Java’nın nesne odaklı programlamanın olmazsa olmazlarından çok biçimliliği...

Sekkaşı'nın Bayırı - April 26, 2009 11:56 AM
Java Dersleri 5 - Kalıtım (Inheritance)

Bu derste Java’nın nesne yönelimli programlamanın temeli olan kalıtım(Inheritance) kavramını nasıl gerçeklediğini öğreneceğiz. Yazılım terminolojisinde kalıtım bir sınıfın diğer bir sınıfın özelliklerini belirli kısıtlar çerçevesinde kazanmasıdır. Aynı kod parçalarının tekrar tekrar yazılmasını engellemenin yanı sıra nesneler arasında gerçek hayata benzer mantiki bağlar kurulmasını
kolaylaştırır. Kalıtımın gerçeklenmesini sağlayan anahtar kelime “extends” dir. Örneğin :

public class PointPlotter extends JXGraph

sınıf tanımında PointPlotter sınıfının JXGraph sınıfından miras aldığını belirtmiş oluyoruz. Buradaki JXGraph sınıfına PointPlotter sınıfının üst sınıfı denir. Kalıtım sınıflar arasında tek yönlü bir ilişki tanımlar. PointPlotter sınıfının her nesnesi aynı zamanda bir JXGraph nesnesinin özelliklerini taşımakta iken tersi yeni JXGraph nesnelerinin PointPlotter nesnesi özellikleri taşıması söz konusu değildir. Buradaki sınıf değişkenleri ve metodlarının miras alınmasında erişim denetleyicilerin kısıtlamaları söz konusudur.
Erişim denetleyicilerin anlatımı için buraya bakabilirsiniz. Bit örnekle kalıtım mekanizmasının nasıl işlediğini daha iyi anlayalım:

package net.orhanbalci.data;

/**
 *
 * @author Orhan BALCI
 */
public class Point2D<t> {

    protected T x_;
    protected T y_;

    public Point2D(T x_, T y_) {
        this.x_ = x_;
        this.y_ = y_;
    }

    public Point2D(Point2D</t><t> p)
    {
        this.x_ = p.getX();
        this.y_ = p.getY();
    }

    public Point2D()
    {

    }

    public T getX() {
        return x_;
    }

    public void setX(T x) {
        this.x_ = x;
    }

    public T getY() {
        return y_;
    }

    public void setY(T y) {
        this.y_ = y;
    }

    @Override
    public String toString() {
        return "Point2D ["+x_+"," +y_+"]";
    }

}
package net.orhanbalci.data;

/**
 *
 * @author orhan
 */
public class Point3D</t><t> extends Point2D</t><t> {

    private T z_;

    public Point3D(T z) {
        this.z_ = z;
    }

    public Point3D(Point2D</t><t> p, T z) {
        super(p);
        this.z_ = z;
    }

    public Point3D(T x, T y, T z) {
        super(x, y);
        this.z_ = z;
    }

    public Point3D(Point3D</t><t> p)
    {
        this.z_ = p.z_;
        this.y_ = p.y_;
        this.x_ = p.x_;
    }

     public T getZ() {
        return z_;
    }

    public void setZ(T z) {
        this.z_ = z;
    }

    @Override
    public String toString() {
        return "Point3D ["+x_+","+y_+","+z_+"]";
    }
}

Yukarıdaki örnekte yazılımımızda kullanmak üzere iki ve üç boyutlu noktaları temsil eden iki tane sınıf tanımlıyoruz. Point2D sınıfımızın x_ ve y_ olmak üzere iki adet sınıf değişkeni var. Point3D sınıfımızın kendisinde ise sadece z_ sınıf değişkeni varken Point2D sınıfından miras alarak x_ ve y_ değişkenlerine de sahip olmuştur. Dikat edilecek olursa x_ve y_ değişkenlerinin erişim denetleyicisi protected olarak ayarlanmıştır. Böylelikle alt sınıflardan erişilebilirsler. Burada dikkat etmemiz gereken bir diğer husus ise üst sınıf metodlarının alt sınıftan nasıl çağrıldığıdır. “super” anahtar kelimesi alt sınıftan üst sınıf metodlarına ve değişkenlerine erişimi sağlayan kapıdır.

public Point3D(T x, T y, T z) {
        super(x, y);
        this.z_ = z;
    }

yapıcı metodunda super(x, y); satıları üst sınıfın

 public Point2D(T x_, T y_) {
        this.x_ = x_;
        this.y_ = y_;
    }

yapıcı metodunun çağrılmasını sağlar. Yapıcı metodlar dışındaki metdolara “super.” şaklinde ulaşabiliriz.

İlgili Yazılar:

  1. Java Dersleri 7 - Çok Biçimlilik (Polymorphism) Bu dersimizde Java’nın nesne odaklı programlamanın olmazsa olmazlarından çok biçimliliği...
  2. Java Dersleri 4 - Erişim Denetleyicileri (Access Modifiers) Bu dersimizde Java’nın metodlar ve sınıflar üzerinde erişim kurallarını düzenleyen...
  3. Java Dersleri 6 - Arayüzler ve Gerçeklenmesi (Interface and Implementation) Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir...

Sekkaşı'nın Bayırı - April 12, 2009 04:52 PM
Java Dersleri 4 - Erişim Denetleyicileri (Access Modifiers)

Bu dersimizde Java’nın metodlar ve sınıflar üzerinde erişim kurallarını düzenleyen anahtar kelimelerini ve nasıl kullanıldıklarını örnekleriyle öğreneceğiz. Java’da dört adet erişim düzeyi bulunmakla birlikte üç adet erişim denetleyici anahtar kelime vardır. Dördüncü erişim düzeyi ise bu kelimelerin bulunmadiği seviyedir. Erişim kontrolü yazılımda her birimin kendi işine odaklanmasına yardımcı olur. Temelde nesne yönelimli programanın ana unsrlarındandır. Veri kapsülleme, miras ve çok biçimlilik paradigmalarının hayata geçirilmesine olanak tanırlar. Java’da erişim denetleyici anahtar kelimeler şunlardır:

1)Public
2)Protected
3)Private


Bu anahtar kelimelerle işaretlenmemiş her türlü Java yapısı default erişim seviyesine sahip olur ki bu da
dördüncü erişim seviyesidir. Sırasıyla bu seviyeleri ve aralarındaki erişim ilişkilerini açıklamaya çalışalım.

1)Public Erişim Seviyesi
Bu anahtar kelime önüne geldiği sınıfı,değişkeni, methodu diğer bütün kod bloklarından erişilebilir olarak işaretler. Sınıf seviyesinde kullanılabildiği gibi sınıf elemanları seviyesinde de kullanılabilir. Örneğin :

public class FrmVet extends JPanel implements IDataChangeListener, ListSelectionListener {
}

FrmVet sınıfı tanımında kullanılan public anahtar kelimesi bu sınıfın proje kapsamında diğer tüm sınıflar tarafından kullanılabilieceğini belirtir. Bu örnekte ise :

public abstract class QueryManagerBase {

	public ResultSet runSelectQuery(String query) throws SQLException
	{
		Statement s = (Statement) connection.getConnection().createStatement();
		return (ResultSet) s.executeQuery(query);
	}

}

public anahtar kelimesi runSelectQuery(String query) metodunu diğer sınıflar tarafından kısıtlama olmadan erişilebilir olarak işaretlemiştir.

2)Protected Erişim Seviyesi
Bu erişim seviyesi sınıflara uygulanamamakla birlikte metodlara ve sınıf değişkenlerine uygulanır. Önünen geldiği elemana
“alt sınıflardan” ve “aynı pakette bulunan sınıflardan” ulaşılmasına izin verir. Örneğin :

public abstract class QueryManagerBase {

	protected IDatabaseConnection				connection;
	protected ArrayList<idatachangelistener>	dataChangeListeners;
}

bu sınıftaki connection ve dataChangeListeners değişkenlerine ancak QueryManagerBase sınıfının alt sınıflarından yada bu
sınıfla aynı pakette yer alan sınıflardan erişilebilir. Yukarıdaki sınıfın alt sınıfı olan bu örnekte kullanımı görelim :

public class QueryManager extends QueryManagerBase {
public boolean addClient(EntityClient client) throws SQLException
	{
		java.sql.PreparedStatement ps = connection.getConnection()
				.prepareStatement(_insertClientQuery);
		ps.setString(1, client.getAd());
		ps.setString(2, client.getSoyad());
		ps.setString(3, client.getAdres());
		ps.setString(4, client.getTelefonEv());
		ps.setString(5, client.getTelefonCep());
		ps.setString(6, client.getAciklama());
		int result = ps.executeUpdate();
		notifyDataChangeListeners(DataChangeKey.CLIENT);
		return result == 1;
	}
}

Bu örnekte QueryManager sınıfı QueryManagerBase sınıfının alt sınıfıdır. QueryManagerBase sınıfında protected olarak işaretlenen

connection değişkeni java.sql.PreparedStatement ps = connection.getConnection()
				.prepareStatement(_insertClientQuery);

satırında kullanılmıştır.

3)Private Erişim Seviyesi
Protected erişim seviyesine benzer olarak sadece sınıf elemanlarına yani sınıf değişkenlerine ve metodlarına uygulanabilir,
sınıf seviyesinde uygulanamaz. İşaretlediği elemanı sadece sınıf içerisinden erişilebilir kılar. Yani ne aynı paketteki diğer
sınıflar ne de alt sınıftan bu elemanlara erişilemez. Örnek :

public class MYSQLDatabaseConnection implements IDatabaseConnection {

	private Connection mysqlConnection;

}

Buradaki MYSQLDatabaseConnection sınıfına ait olan mysqlConnection değişkeni private olarak işaretlenmiş yani sadece sınıf elemanları
tarafından kullanılabilir, MYSQLDatabaseConnection sınıfı haricinde kullanılamaz.

4) Default Erişim Seviyesi
Java’da sınıf seviyesinde veya sınıf üyeleri seviyesinde herhangi bir erişim belirleyici anahtar kelimenin kullanılmadığı durumdur.
Bu tip sınıflara ve elemanlara kullanıldıkları sınıf içerisinden ve aynı paketteki diğer sınıflardan erişilebilir.

Anlattıklarımızı aşağıdaki tabloda özetleyebiliriz:

Erişimci Sınıf Paket Alt Sınıf Diğer
Public Erişim Var Erişim Var Erişim Var Erişim Var
Protected Erişim Var Erişim Var Erişim Var Erişim Yok
Default Erişim Var Erişim Var Erişim Yok Erişim Yok
Private Erişim Var Erişim Yok Erişim Yok Erişim Yok

Kaynaklar:

İlgili Yazılar:

  1. Java Dersleri 6 - Arayüzler ve Gerçeklenmesi (Interface and Implementation) Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir...
  2. Java Dersleri 5 - Kalıtım (Inheritance) Bu derste Java’nın nesne yönelimli programlamanın temeli olan kalıtım(Inheritance) kavramını...
  3. Java Dersleri 2 - Sınıf Kavramı ve Yapısı (Class Structure) JDK kurulumunu ve derleyici kullanımını öğrendikten sonra kod geliştirmeye başlayabiliriz....

Sekkaşı'nın Bayırı - April 08, 2009 08:06 PM
Java Dersleri 3 - Kontrol Yapıları

Bu dersimizde Java’nın kodun akışına yön veren kontrol ifadelerinin kullanımını öğreneceğiz. Java kontrol ifadeleri
temel olarak şunlardan oluşmaktadır:

1)if-else if - else blokları
2)for ve foreach döngüleri
3)while ve do-while döngüleri
4)switch-case blokları

Şimdi sırasıyla bunları örneklerle açıklayalım.

1)if-else if-else blokları

Genel manada doğrulanabilir bir ifadenin sonucuna göre yazılımın dallanmasına olanak tanır. Temel bir “if”
deyiminin yapısı:

if(doğrulanabilir ifade)
{
	doğru ise çalışacak ifadeler;
}

şeklindedir. Burada doğrulanabilir ifadenin sonucu boolean veri tipinde olmak zorundadır. Burada bir diğer husus
ise if deyiminden sonra sadece bir ifade yer alacaksa parantezlerin kullanımı kullanıcıya bağımlıdır zorunlu değildir. Yani

if(doğrulanabilir ifade)
	tek ifade;

kullanımı doğrudur. Test edilen durumun yanlış olması durumunda çalışacak kod bloğunu ise “else” anahtar kelimesiyle belirtiyoruz.

if(doğrulanabilir ifade)
{
	doğru ise çalışacak ifadeler;
}
else
{
	yanlış ise çalışcak ifadeler;
}

Doğrulama durum sayısı arttığında ise bunu “else if” anahtar kelimesiyle belirtiyoruz. Burada kontrol etmek istediğimiz durum sayısı
kadar “else if” bloğu kullanabiliriz.

if(doğrulanabilir ifade)
{
	kontrol doğru ise çalışacak ifadeler;
}
else if(farklı doğrulanabilir ifade)
{
	kontrol doğru ise çalışacak ifadeler;
}
...

else
{
	yanlış ise çalışcak ifadeler;
}

Bloklar arası sıralama önemlidir. İsteğe bağlı “else if” blokları “if” bloğundan sonra “else if” bloğundan önce gelmelidir. Ayrıca
isteğe bağlı “else” bloğu mutlaka sonda yer almalıdır. Doğrulanabilir ifade yazarken yapılan en sık hatalardan bir tanesi karşılaştırma “==” operatörü yerine değer atama (assignment) “=” operatörünün kullanılmasıdır. Değer atama operatörünün sonucu değer atama işleminden sonra sol tarafta bulunan değişkenin değeridir. Örnekleyecek olursak :

boolean a = false;
if(a = true)
{
	System.out.println("a doğrudur");
}

Yukarıdaki kod parçasında amaç a nın doğru olup olmadığını tespit etmek iken yanlışlıkla a değişkenine doğru değeri atanıp ekrana “a doğrudur” mesajı basılır. Oysaki “=” yerine “==” kullanılsa ekrana herhangi birşey yazılmadığı görülecektir.
Örnek if-else if-else bloğu :

if(subTreeNode == null)
            return false;
        else if(element.compareTo(elementAt(subTreeNode)) == 0)
            return true;
        else if(element.compareTo(elementAt(subTreeNode)) < 0)
            return search(element,subTreeNode.left);
        else if(element.compareTo(elementAt(subTreeNode)) > 0)
            return search(element, subTreeNode.right);
        else
            return false;

2)for ve foreach döngüleri
Döngüler kod içinde tekrarlanan bölümlerin tanımlanmasında kullanılırlar. For döngüsü tanımı temel olrak üç kısımdan oluşur :
a)Döngü değişkeni tanımı : döngü hayatını kontrol edecek değişkenin tanımlandığı ifade
b)Döngü kontrol ifadesi : döngünün bitip bitmeyeceğini kontrol eden ifade
c)Döngü ilerleme ifadesi : döngü ilerleme ifadesi, döngü değişkeninin güncellendiği ifade

for(döngü değişkeni tanımı; döngü kontrol ifadesi; döngü ilerleme ifadesi)
{
	döngü gövdesi;
}

Örnek :

 for (int i = 0; i < numberOfPoints; i++) {
            Random r = new Random();
            int k = r.nextInt(xUpperLimit) % (xUpperLimit - xLowerLimit) + xLowerLimit;
            int j = r.nextInt(yUpperLimit) % (yUpperLimit - yLowerLimit) + yLowerLimit;
            Point2D<Integer> p = new Point2D<integer>(k, j);
            al.add(p);
        }

Java 1.5 ile gelen syntax değişimlerinden biriside geliştirilmiş for döngüsü olarak adlandırılan for each döngüsüdür. Listelerde ve arraylarda rahat
bir şekilde gezinmek amacıyla geliştirilmiştir. Kullanımı :

for(eleman : array)
{
	döngü gövdesi;
}

şeklindedir.

Örnek :

ArrayList&lt;Point2D &lt;Integer&gt;&gt; al = new ArrayList &lt;Point2D &lt;Integer&gt;&#62;();
	for(Point2D&lt;Integer&gt; a : al)
        {
                System.out.println(a);
        }

Bu örnekte içinde Point2D tipinde nesneler barındıran bir liste elemanları geliştirilmiş for döngüsü kullanılarak ekrana yazdırılıyor.

3)while ve do-while döngüleri
while döngüleri tekrar edilecek kod bloğunun kaç defa tekrar edeceğini bilmediğimiz durumlarda kullanılır. Kullanımı:

while(döngü kontrol ifadesi)
{
	döngü gövdesi;
}

şeklindedir. For döngüsünden farklı olarak döngü kontrol değişkeninin tanımı while döngüsünden önce yapılmalıdır.
while(int i = 0) kullanımı yanlıştır.
do-while döngüsü while döngüsünden farklı olrak kapsadığı kod bloğunun en az 1 kere çalıştırılmasını garanti eder. Kullanımı:

do
{
	döngü gövdesi;
}while(döngü kontrol ifadesi);

4)switch-case blokları
switch-case blokları dallanmış if-else if-else bloklarını daha okunabilir hale getirmek için oluşturulmuştur. Genel yapısı :

switch(ifade)
{
	case sabit :
	kod bloğu;
	case sabit 2:
	kod bloğu;
	....
	default:
	kod bloğu;
}

şeklindedir. Burada “ifade” int,short,byte,char ve enum tiplerinde olabilir. Sabitler ise switch ifadesi tipiyle aynı tipte olmalıdır.
Yukarıdaki ifadede sabit ve sabit 2 değerleri aynı olamaz. Kod blokları sonunu “break” anahtar kelimesiyle belirtmezsek doğru case bloğunun altındaki
tüm bloklar çalışır.Yani :

switch(1)
{
	case 1: System.out.println("sayi bir");
	case 2: System.out.println("sayi iki");
	default: System.out.println("varsayilan");
}

çıktı olarak :
sayi bir
sayi iki
varsayilan
verecektir.

İlgili Yazılar:

  1. Java Dersleri 5 - Kalıtım (Inheritance) Bu derste Java’nın nesne yönelimli programlamanın temeli olan kalıtım(Inheritance) kavramını...
  2. Java Dersleri 2 - Sınıf Kavramı ve Yapısı (Class Structure) JDK kurulumunu ve derleyici kullanımını öğrendikten sonra kod geliştirmeye başlayabiliriz....
  3. Java Dersleri 6 - Arayüzler ve Gerçeklenmesi (Interface and Implementation) Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir...

Sekkaşı'nın Bayırı - April 01, 2009 07:50 PM
Duvarlara Sinen Yıllar

Kim bilir kaç mezuniyet gördü şu duvarlar, binanın yanan ışıkları kim bilir kimlere şahitlik etti. Yine ayrılık vakti
geldi bazıları için ama o hep yerli yerinde. Duvarlarına sinmiş sevinç nidalarının haddi hesabı yok. O güzel ve ulvi
duyguları defalarca yaşadı, ömrü yettiğince de yaşayacak. Oysa öğrenciler öyle değil, onlar o anı sadece bir defa yaşayabiliyorlar. Öyle ya insan bir defa mezun olur aynı okuldan. Ama arkalarında tüm sırlarına vakıf bir dost bırakırlar, kimisi bunun farkında kimisinin umrunda bile değil.

Her ne kadar mahpushane koğuşlarını andırsada yatılı okul yatakhane odaları, sağlam arkadaşlıkların temellerinin atıldığı nadir yerlerden birisidir. Küçük yaşta paylaşılan büyük hissiyatların mekanlarıdır onlar. Tren katarları gibi arka arkaya dizilen 101,102,103 numaralı odalarda yapılır gece sohbetleri. Buralarda yaşanır ilk aşk acısı, buralarda düşer sıla hasreti buruk yüreklere, buralarda hissedersiniz boğazınıza düğümlenen ve gitmek bilmeyen üzüntü ilmeklerini. Kendine has bir kültürü de içinde barındırır yatılı okul yatakhaneleri. Her şeyden önce bir düzen, nizam, intizam hakimdir her köşeye. Bu düzenin anahtarları yat ve kalk saatleridir. Yat saatinden sonra yapılan sohbetlere doyum olmazken kalk saatinden önceki dakikalar da en stresli vakitlerdir. Eğer şanslıysanız kalk saatinden bir saat önce uyanır, uyanır uyanmaz da daha kalkmanıza bir saat olduğunun farkına varır ve o an dünyanın en mutlu insanı oluverirsiniz. Uykulu gözlerle etüt salonunun yolunu tutarken ayaklar adeta tersine e gider. Sabah etütlerinde akşamın gürültüsü, şamatası yerini derin bir sessizliğe bırakır. Kahvaltı saati yaklaşırken salonlar hareketlenmeye başlar. Yatılı öğrencinin en büyük eğlencesi ister öğle yemeği olsun ister kahvaltı, sıra kapma yarışıdır. Etüt sınıfından start alan yarış yemekhane kapısında biter. Uçarak üçer beşer atlanan merdivenler kimi zaman üzücü olaylara da sahne olur. Tabi muhabbet ehli olan yatılı öğrenci yemekhane sırasındaki zaman boşluğunu da gayet iyi değerlendirir. Kazan çayı eşliğinde yapılan kahvaltı herzaman istekleri karşılamada yeterli olmaz. Alır eline çatal kaşığı başlar protestoya bilse de sonuç alamayacağını.

Yatılı öğrenciler arasında bir grup vardir ki onlar arasindaki bağ diğerlerine nazaran daha sıkıdır : Hafta sonu eve gidemeyenler grubu. Bu grup için hafta sonu çok çeşitli aktivite ve oyunlarla dolu zevkli bir zaman dilimidir. Her ne kadar eve gidememenin burukluğu olsada zamanla aşılır bu duygu. Hafta sonu oyunları arasında en güzeli japon kaledir. Her yatakhane kapısı birer birer kapılır, çoraptan yada kağıttan top yapılır, golü kapısında gören yerini sırada bekleyene bırakır. Yatakhane koridorunda ikiye iki maç yapmakta ayrı zevktir. Eğer küçük plastik bir top bulunabilirse koridorda tekvuruş da oynanabilir. Hele sayı biraz fazlaysa okulun kapalı spor salonundaki hentbol sahasını futbol amaçlı kullanmak da hınzır öğrencilerin favorileri arasındadır. Bu öğrenciler futboldan başka oyun oynamıyor mu arkadaşım diyenleriniz olabilir. Oynar elbet. Uzun eşek oynar, satranç oynar,havuza yüzmeye gider… Hele bir de mevsimlerden ilkbahar ise yapılan gezilerin, pikniklerin haddi hesabı olmaz. Hafta sonu macerası pazar akşamüstü eve gidenlerin dönmesiyle sona erer.

Ranzalar, yatakhane odaları, etüt salonları, kapalı spor salonu ve arkadaşlar… Duvarlara sinen kahkahalar, nidalar, hıçkırıklar… Maziden bir gün çalmak istersen eğer duvarlarına bak yatakhanelerin. Değişse de boyası,sıvası bil ki hatıralar orada saklı.

İlgili Yazı Yok.

Sekkaşı'nın Bayırı - February 15, 2009 06:11 PM
NetBeans Video Ders (Screencast) #3 Kod Şablonları

Video dersi izlemek için resme tıklayın.
Netbeans Code Templates

İlgili Yazılar:

  1. NetBeans Video Ders (Screencast) #2 GUI Tasarımcısı Özellik Bağlama Kipi Video dersi izlemek için resme tıklayın. ...
  2. Netbeans Video Ders (Screencast) #1 JUnit Birim Test Video dersi izlemek için resme tıklayın. ...
  3. Eclipse Video Ders (Screencast) #3 Introduce Parameter Refactoring Video dersi izlemek için resme tıklayın. ...

NetBeans - December 06, 2008 03:56 PM
JavaFX SDK 1.0 yayınlandı

java fxJava camiası bu aralar bu gelişmeyle çalkalanıyor galiba. 4 Aralık'ta Java'nın gücüyle, Ajax, Silverlight ve Flash entegrasyonu gibi bir şey olarak aklımda imajı oluşan JavaFX'in Software Development Kit'i (SDK Yazılım Geliştirme Paketi) JavaFX.com'dan indirilebiliyor. NetBeans'in de özel olarak "plugin" (eklenti) yapmış olması, Sun firmasının buna verdiği değeri bir parça daha gözler önüne seriyor sanırım. Netbeans.org'daki indirme adresi şöyle: http://www.netbeans.org/downloads/index.html

JavaFX'i böyle anladığımı söyledim ama yanlış anlamış da olabilirim. Bilen beni de düzeltsin Smiling

JavaFX örnekleri şurada, tanıtım videoları şurada.

NetBeans - November 20, 2008 07:26 AM
NetBeans 6.5 Çıktı

NetBeans 6.5

Ünlü açık kaynak Java IDE'si NetBeans'in 6.5 sürümü çıktı. NetBeans.org sitesinden indirilebilir durumda.

Bu sürümde Java'nın yanısıra PHP, Ajax/JavaScript, C/C++ ve Ruby de kodlayabiliyoruz. Yeni NetBeans'ın özellikleri burada. Dokümantasyon ve destek burada. Yardımcı videolara da buradan erişebiliyoruz.  Devamını oku »

Sekkaşı'nın Bayırı - November 14, 2008 06:23 PM
NetBeans Video Ders (Screencast) #2 GUI Tasarımcısı Özellik Bağlama Kipi

Video dersi izlemek için resme tıklayın.
Netbeans Connection Mode

İlgili Yazılar:

  1. Netbeans Video Ders (Screencast) #1 JUnit Birim Test Video dersi izlemek için resme tıklayın. ...
  2. NetBeans Video Ders (Screencast) #3 Kod Şablonları Video dersi izlemek için resme tıklayın. ...
  3. Eclipse Video Ders (Screencast) #3 Introduce Parameter Refactoring Video dersi izlemek için resme tıklayın. ...

Sekkaşı'nın Bayırı - October 21, 2008 08:44 AM
Kd Ağacı (Kd Tree) Veri Yapısı Görselleştirmesi

Aşağıdaki resme tıklayarak uygulamalı olarak kd ağaç veri yapısına değerler ekleyip çıkarabilirsiniz.

İkili Ağaç Veri Yapısı

İlgili Yazılar:

  1. İkili Ağaç Veri Yapısı (Binary Search Tree) İkili ağaç veri yapısı, arama ve sıralama algoritmalarındaki hızı nedeniyle...

NetBeans - September 17, 2008 01:33 PM
NetBeans ile Wordpress Teması Yapmak

NetbeansNetBeans bir Java geliştirme ortamı (IDE) demiştik. Ama PHP de geliştirebiliyoruz aslında.

Şu anki (6.1) tam sürümünde PHP desteği olmasa da PHP için özel bir sürümü var. Ayrıca NetBeans 6.5'te de olacak diyorlar. Toni Epple bu PHP destekli NetBeans sürümü ile meşhur Wordpress temaları yapmanın sırrına vakıf olmuş ve blogunda paylaşmış. Olaya ilham kaynağı olan viki sayfası da burda.  Devamını oku »

Sekkaşı'nın Bayırı - September 17, 2008 05:34 AM
Netbeans Video Ders (Screencast) #1 JUnit Birim Test

Video dersi izlemek için resme tıklayın.
Netbeans Junit Test

İlgili Yazılar:

  1. NetBeans Video Ders (Screencast) #2 GUI Tasarımcısı Özellik Bağlama Kipi Video dersi izlemek için resme tıklayın. Paylaş Hide Sites ...
  2. NetBeans Video Ders (Screencast) #3 Kod Şablonları Video dersi izlemek için resme tıklayın. Paylaş Hide Sites ...
  3. Eclipse Video Ders (Screencast) #3 Introduce Parameter Refactoring Video dersi izlemek için resme tıklayın. Paylaş Hide Sites ...

Sekkaşı'nın Bayırı - September 13, 2008 10:47 AM
Java Dersleri 2 - Sınıf Kavramı ve Yapısı (Class Structure)

JDK kurulumunu ve derleyici kullanımını öğrendikten sonra kod geliştirmeye başlayabiliriz. Kod geliştirmeye başlamanın ilk adimi olarak Java’nın yapıtaşı olan sınıf (class) kavramını öğreneceğiz. Gerçek hayattaki kalıpların yazılım dünyasındaki karşılıkları sınıflardır. Sınıflar yazılım içerisinde tanımlamak istediğimiz nesneler için şablon görevi görürler.

Genel olarak bir Java sinifinin yapısı şu şekildedir :

[Paket Deklerasyonu] (package)
[Dış Kütüphane Referansları] (import)
[Sınıf Yorum Bloğu] (/***/)
[Sınıf İmzası] (class extends implements)
{
[Sınıf Değişkenleri](int double … MyClass)
[Metod Yorum Blokları]
[Sınıf Metodları]
}

Buradaki sıralamada dikkat etmemiz gereken birkaç husus var. Eğer sinifimiz herhangi bir paket içinde bulunacaksa Paket Deklerasyonunu sinifin en başında yapmamız zorunludur. Paket deklerasyonundan sonra ise dış kütüphane referansları gelir. Tabi eğer herhangi bir dış kütüphane kullanılmayacaksa bunlara gerek yoktur. Sınıf değişkenleri ile metodlarının yazımında herhangi bir sıralama söz konusu değildir. Yani önce metodları tanımlayıp sonra da değişkenleri tanımlayabilirsiniz.

Üzerinde durmamız gereken diğer bir hususta sinif ismimizle dosya ismimizin aynı olması gerektiğidir. Yani QueryManagerBase sinifimizi QueryManagerBase.java dosyamızda bulundurmalıyız. Bu konuda bir kaç istisna var
bunlara ileride değinilecektir

İlgili Yazılar:

  1. Java Dersleri 4 - Erişim Denetleyicileri (Access Modifiers) Bu dersimizde Java’nın metodlar ve sınıflar üzerinde erişim kurallarını düzenleyen...
  2. Java Dersleri 6 - Arayüzler ve Gerçeklenmesi (Interface and Implementation) Nesne odaklı programlamada arayüzler sınıfların dış dünyaya açılan kapılarıdır. Bir...
  3. Java Dersleri 5 - Kalıtım (Inheritance) Bu derste Java’nın nesne yönelimli programlamanın temeli olan kalıtım(Inheritance) kavramını...

Suat ATAN * KARALAMA DEFTERİ » NetBeans - August 25, 2008 09:19 PM
Netbeans: O da ne?



Netbeans da ne oluyor? Adın sıkça duyuyor, kerametlerini işitiyorsunuz. Ancak Netbeans nedir diye soramıyorsunuz? Netbeans ile ilgili binlerce yazının yazılıp çizildiği Google Cehenneminde eminim kimse size Netbeans’ın tam olarak ne olduğunu açıklamıyor. Sanki herkes sırrı saklamak için paylaşmış gibi.
İşte sırların cevabı:


Netbeans Nedir?
Netbeans bir IDE’dir. Yani yazılım geliştirme ortamıdır. Bu yönü ile daha evvel duyma ihtimaliniz olan Eclipse, JBuilder, Oracle JDeveloper, Visual Studio gibi geliştirme ortamlarının meslektaşıdır:) [ Benzeridir diyemeyeceğim çünkü Netbeans IDE'lerin piridir.]
Eğer Java ileyazılım geliştirme ile uğraşıyorsanız belki de Notepad ile kodlarınızı yazıp, windows’un sevimsiz konsoünde “cavaj” ön komutu ile derleme yapıyor daha sonra da “hatasız kod olmaz” diyerek hatalarınızı düzelttikten sonra programınızı son bir kez daha derleyip “java” yada “javaw” ön komutu ile çalıştırıyordunuz.
Belki bunların hiç birini yapmıyor, ya hu kodlarımı nasıl “compile” ederim diyordunuz.
İşte Netbeans bunların hepsini sizin yerinize yapıyor. Bu en basit özelliği.

Mobil geliştirme ortamından görünüm.

İşte diğer özellikleri:

  • GUI olarak tesmiye edilen, grafiksel yani düğmeli, textfieldli, adamakıllı programlar için sürükle bırak tekniği ile hızlıca arayüz oluşturma imkanı
  • GUI’lerdeki düğme vb. objelerin tıklanması gibi özel olaylarda programın ne yapacağını belirleyen kodların çerçevesini özel olarak oluşturma
  • Java ile (JSP,JSF) Web programcılığı için neredeyse tamamen sürükle bırak tekniği ile çalışma imkanı
  • Sürükle bırak yöntemi ağırlıklı ve üstün özelliklere sahip, hızlı ve esnek mobil programcılık ortamı (cep telefonları,PDA’LAR). Bu programları ilgili ortama anında yükleyebilme imkanı. (Örneğin derlediğiniz mobil programınızı direkt netbeans üzerinen cep telefonunuza atabiliyorsunuz (6.1+))
  • Binlerce özel eklenti ile farklı yazılım geliştirme seçenekleri. (Örneğin Mozilla Eklentisi geliştirmek için yazılmış Netbeans modülü ile Mozilla Browser’inize eklenti yazabiliyorsunuz)
  • Netbeans için kendi özel eklentilerinizi yazabilme imkanı
  • Java dışında C, Ruby, ve 6.1 versiyondan sonra PHP ve Javascript için de özel geliştirme ortamı
  • Web servisleri geliştirme ortamı

Eh dostlar, gelin de böyle bir IDE’yi kullanmayın. Ben 4.1 versiyonundan beri yani 2004′ten beri kullanıyorum.
Netbeans ile yaptığım örnek bir proje için:
http://code.google.com/p/mocawa/

adresinden (Google Kod barındırma hizmeti) programı inceleyebilirsiniz.

Bilenler, bilmeyenlere anlatsın.

Suat ATAN * KARALAMA DEFTERİ » NetBeans - August 25, 2008 08:58 PM
PlanetNetBeans’ta Blogum Yayınlandı


Eh…! bir blog yazarını gurulandıracak bir husus.
Dün gece gelen mail ile Blog’umun Netbeans etiketlerini içeren kısmının PlanetNetbeans’ta yayınlandığını bildiren bir eposta aldım.
Benim blogum dışında da güzel bloglar var.
Elbette bu “kutsal sitede” blogumun yayınlanması ile Netbeans için daha fazla çalışacağım.

Saygılarımla…

Sekkaşı'nın Bayırı - August 24, 2008 02:02 PM
Eclipse Video Ders (Screencast) #3 Introduce Parameter Refactoring

Video dersi izlemek için resme tıklayın.
Eclipse Introduce Parameter Refactoring

İlgili Yazılar:

  1. Eclipse Video Ders (Screencast) #1 Extract Method Refactoring Video dersi izlemek için resme tıklayın. Paylaş Hide Sites ...
  2. Eclipse Video Ders (Screencast) #2 Extract Super Class Refactoring Video dersi izlemek için resme tıklayın. Paylaş Hide Sites ...
  3. NetBeans Video Ders (Screencast) #2 GUI Tasarımcısı Özellik Bağlama Kipi Video dersi izlemek için resme tıklayın. Paylaş Hide Sites ...

muarifer * ruby, rails ve yazılım geliştirimi üzerine - August 16, 2008 06:41 AM
NetBeans 6.5 Beta Yayımlandı

Haberi sevgili Fatih’in sitesinden aynen kopyalıyorum.

NetBeans 6.5 Beta sürümü bugün yayımlandı.

Birçok yenilikle gelen NetBeans 6.5 Beta sürümünün release notlarını http://www.netbeans.org/community/releases/65/relnotes.html adresinden okuyabilirsiniz.

NetBeans 6.5 Beta sürümünü indirmek için http://download.netbeans.org/netbeans/6.5/beta/ adresini ziyaret edebilirsiniz.

NetBeans’ın 6.5 i Türkçeleştirmek için bu sefer daha ciddi adımlar atıyoruz. Bu nedenle sizlerin de yardımına ihtiyacımız var. Bu konu ile ilgili Fatih ya da benimle iletişime geçebilirsiniz.
Hayırlı kandiller.

Sekkaşı'nın Bayırı - July 23, 2008 05:29 PM
Eclipse Video Ders (Screencast) #2 Extract Super Class Refactoring

Video dersi izlemek için resme tıklayın.
Eclipse Extract Super Class Refactoring

İlgili Yazılar:

  1. Eclipse Video Ders (Screencast) #1 Extract Method Refactoring Video dersi izlemek için resme tıklayın. ...
  2. Eclipse Video Ders (Screencast) #3 Introduce Parameter Refactoring Video dersi izlemek için resme tıklayın. ...
  3. NetBeans Video Ders (Screencast) #2 GUI Tasarımcısı Özellik Bağlama Kipi Video dersi izlemek için resme tıklayın. ...

Sekkaşı'nın Bayırı - July 23, 2008 05:23 PM
Eclipse Video Ders (Screencast) #1 Extract Method Refactoring

Video dersi izlemek için resme tıklayın.
Eclipse Extract Method Refactoring

NetBeans - April 29, 2008 09:22 PM
NetBeans 6.1 çıktı, bayinizden tükenmeden alın

NetBeans bizim sevgili tank "IDE"miz. Yani tank gibi sağlam, bir o kadar da hantal (yo katiyyen hantal değil) yavaş uygulama geliştirme ortamımız (Integrated Development Environment). Kendisi GNU v2 lisansıyda dağıtılmakta. Türkçe meali beleş. Yani dilediğince kullanabilir, kopyalayıp elaleme dağıtabilirsin.

İşte bu bahsettiğim zat-ı muhteremin 6.1 sürümü dün çıktı. Dileyen burdan indirebilir.

Bugünlük bu kadar artık... Daha yazacaktım ama geç oldu.

Suat ATAN * KARALAMA DEFTERİ » NetBeans - April 25, 2008 09:51 PM
Netbeans’de Persistence Kullanımı ve önemli ipuçları


Java Netbeans Desktop Database App.
(Resim:1 Netbeans resmi sitesinden persistence uygulaması örneği)

Ücretsiz Java Program Geliştirme Ortamı olan Netbeans IDE’nin 6.0 ve üstü sürümlerinde masaüstü programlar için desteklediği Persistence teknolojisi sayesinde veritabanı programcılığının rahatlığının .NET ile boy ölçüşür düzeye geldiği bilinmektedir.
Ancak bu teknolojinin yeni olması itibari ile internette ingilizce kaynak bile bulmakta sıkıntı çekilmektedir.
Persistence teknolojisinin en temel kullanımı hakkında Netbans’ın resmi sitesindeki:
http://www.netbeans.org/kb/60/java/gui-db.html
adresli makale inclenebilir. Bu makalede varolan bir veritabanından CRUD uygulaması ya da CREATE,UPDATE,DELETE uygulamasının yani Türkçesi ile; Veri ekleme, Veri güncelleme, Veri Silme uygulamasının yapılışı anlatılmaktadır. Buna bir de listeleme özelliği eklemek gerekir nitekip program listeleme özelliğini de otomatik olarak oluşturuyor.
Buraya kadar sorun yok;
Ancak Netbeans’ta sözkonusu makalede geçen veritabanından ya da kendinzize ait özel veriabanından spesifik sorgulama yapmak istediğinizde sofistike sql sorgusu rahatlığında işi gerçekleştiremiyorsunuz.
Bunun için geçirdiğim iki uykuz geceden sonra ortaya çıkardığım metodu sizlerle paylaşayım:

Netbeans\'de persistence kullanımı

(Resim2: Suat ATAN tarafından yazılan bir uygulanada Netbeans IDE’nin Inspector ekranı)

Gerek Netbeans’ın Desktop Database Project seçeneği ile otomatikmen oluşturulan projelerinde gerekse sizin program içinde herhangi bir component’e sağ tıklayıp data bindirmek için “bind” ibaresini tıklamanızda ekran kesitinde görüldüğü gibi kırmızı ve yeşil şeritle işaretlediğim componentler ortaya çıkar. Bu componentleri sağ tıklayıp properties (özellikleri) incelenince sorgunun:

SELECT t FROM Teklıfler t

gibi ilginç ve sql’den bozma olduğu görülür. Bu sorguyu maalesef WHERE, ORDER BY gibi taglarla zenginleştiremezsiniz. Bunun için yapmanız gereken işlem biraz uzun,şöyle ki;
Spesifik hale getirmek istediğiniz query’i (bundan böyle kırmızı şeritle işraretli comonenti ifade için böyle diyeceğim) seçip yine sağ tıklayarak “customize code” diyeceksiniz. Daha sonra kod bloğuna örneğin şöyle bir sorgu ekleyebilirsiniz:

Orjinalinde parantez içinde geçen sorgu SELECT t FROM Teklıflerlıstesı t iken siz şöyle yazabilirsiniz:

teklıflıstesıQuery = mocawaPUEntityManager.createQuery(”SELECT t FROM Teklıflıstesı t WHERE t.teklıfno =’”+SECILEN_TEKLIF_NO_STRING+”‘”);

Bu sorgu vasıtasıyla sorgumuzu filitreliyoruz. Gördüğünüz gibi biraz uzun ve sorgu dış parametre kabul etmiyor. Bu yüzden sorgu stringini değişken hale getiriyoruz. Durun daha bitmedi:
Bu hali ile herhangi bir yerden SECILEN_TEKLIF_NO_STRING değişkenini alarak veri dökümünü yapmaya çalışırsanız sonuçta yine veri dönmez. Bunun nedeni ise veri döküm listesinin örneğin bir tabloya ya da combobox’a bindirme işleminin Netbeans’ın standart programı içinde initComponents() metodu içinde kalması ya da bir kereye mahsus program başında çalıştırılması işidir.
Bu derdi de aşmak için verilerin ilgili component’e bir daha bindirilmesi gerekir. Bunu sağşamak için ise Netbeans’ın initComponents() metodu altındaki standart veri bindirme kodlarını kopyalayıp, sorgu filtre parameteresi ortaya çıktıktan sonraki olayla tekrar tetiklemektir.
Yani mesela bir buton tıklamasında bu kodları butonun tıklanma metodu altına tekrar yapıştırmaktır.

Aşağıda bunun güncel bir örneği var: (Kendi programımdan)

private void BT_TEKLIF_DETAYMouseClicked(java.awt.event.MouseEvent evt) {
// FİLTRE PARAMETERESİNİ BİR TEXTFİELDDEN ALIP DEĞİŞKENİMİZE YÜKLEDİK
SECILEN_TEKLIF_NO_STRING=SECILEN_TEKLIF_NO.getText();

//SORGUYU ENTITY MANAGER ILE TEKRAR İŞLEDİK
mocawaPUEntityManager = javax.persistence.Persistence.createEntityManagerFactory(”mocawaPU”).createEntityManager();

teklıflıstesıQuery = mocawaPUEntityManager.createQuery(”SELECT t FROM Teklıflıstesı t WHERE t.teklıfno =’”+SECILEN_TEKLIF_NO_STRING+”‘”);
teklıflıstesıList = teklıflıstesıQuery.getResultList();

//ŞİMDİ SONUÇLARI TABLOYA YENİDEN İŞLİYORUZ
org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, teklıflıstesıList, TABLO2);
org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(”${teklıfno}”));
columnBinding.setColumnName(”Teklıfno”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(”${boy}”));
columnBinding.setColumnName(”Boy”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(”${bırımfıyat}”));
columnBinding.setColumnName(”Bırımfıyat”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(”${dalga}”));
columnBinding.setColumnName(”Dalga”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(”${ebatSerıNo}”));
columnBinding.setColumnName(”Ebat Serı No”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(”${en}”));
columnBinding.setColumnName(”En”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(”${fıyatsafıaenı}”));
columnBinding.setColumnName(”Fıyatsafıaenı”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(”${kalıte}”));
columnBinding.setColumnName(”Kalıte”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(”${safıaboyu}”));
columnBinding.setColumnName(”Safıaboyu”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(”${safıaenı}”));
columnBinding.setColumnName(”Safıaenı”);
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create(”${yukseklık}”));
columnBinding.setColumnName(”Yukseklık”);
columnBinding.setColumnClass(String.class);
bindingGroup.addBinding(jTableBinding);
jTableBinding.bind();

TEKLIF_DETAYLARI.setSize(600, 600);
TEKLIFLER_EKRANI.setVisible(false);
TEKLIF_DETAYLARI.setVisible(true);
TEKLIF_DETAYLARI.setTitle(”TEKLİF DETAYI: “+SECILI_FIRMA.getText());
}

Evet yukarıdan da anlaşılacağı üzere püf noktamız;

  1. Sorgumuzu yenilemek
  2. Ortaya çıkan sonuçları ilgili componentimize tekrar yüklemek
  3. Sorgularımızı alışılmış SQL tarzında değil, biraz daha özel bir formda string olarak kurmak

Değerli arkadaşlar;

Bu makalenin faydalı olacağına inanıyorum. Her türlü soru ve sorunlarınız için bana ulaşabilirsiniz.
Bu makaleyi de kaynak göstermek kaydı ile istediğiniz gibi kullanma hakkınız var.

Sevgi ve Java ile…

Sekkaşı'nın Bayırı - April 25, 2008 04:51 PM
Yanık Fotoğraflar

İlk bakışta hızla gelişen teknolojinin yaşam standardını yükselterek insanoğlunu daha mutlu ettiği yargısına varabiliriz. Öyle ya hayatımıza giren her türlü teknolojik zerzevat yapmamız gereken birçok işte bize yardımcı oluyor. Peki o işler gerçekten yapmamız gereken işler mi? Yeni teknolojik ürünler beraberinde yeni ihtiyaçları da doğurmuyor mu yani teknoloji kendi kendini besleyen bir canavar mı? İlerleyen teknolojinin kendimize ve sevdiklerimize ayırdığımız zamanı çoğaltması beklenirken gün ve gün bilgisayar karşısında geçirdiğimiz saat sayısı artmıyor mu? Hatıralarımızı kaydedebilme imkanlarımızın genişlediği nisbette kaydedecek hatıralarımız azalmıyor mu? Etrafınızda beraber fotoğraf çektireceğiniz güler yüzlü yakınlarınız yoksa, bilmem kaç mega piksel, otomatik flaşlı, vırt X optik zum, zırt X dijital zum, görüntü iyileştirmeli fotoğraf makinanız olmuş neye yarar. Bir bayram sabahı cümbür cemaat aynı sofranın etrafında toplanan aile efradınız olsun da, varsın fotoğraflarınızda gözleriniz kırmızı olsun. Fotoğrafın bir ucunun yanık olmasında da bir behis yoktur vesselam.

Fotoğraflar da yanardı bir zamanlar. Şimdilerde yok şu makinananın çözünürlüğü yüksek, yok bu makinanın renk kalitesi öbüründen kötü yorumlarını duyunca aklıma hep filmli makinalar geliyor. Hani şu filmlerini baskıdan sonra alıp güneşe karşı tutup, eski televizyon filmlerindeki gulyabanilere benzeyen adamlara bakıp bakıp güldüğümüz makinalar. O fotoğraf filmlerinin karanlık oda macerasını öğrendiğimde hem filmlere hem de fotoğrafçılara saygım bir kat daha arttı. Makinada gümüş-brömür ihtiva eden levhaların üzerinde düşen ışığın kağıdın üzerinde şekle bürünmesi icraatına şapka çıkarmamak elde değil. Bundan dolyıdır ki eskiden özenle çekilen fotoğraflara kavuşmamız filmlerin banyoya verilmesinden bir kaç hafta sonrasını bulurdu. Tabi bu arada tatlı bir “Acaba fotoğraflar nasıl çıkacak?” merakı da tüm zihinleri kaplardı. Nasıl kaplamasın zira fotoğrafların yanma olasılığı bile vardı. Şöyle düşünün ki hayatınızda bir defa yaşadığınız düğününüzün fotoğrafları yanmış heba olmuş. Ondandır ki eskiden düğünlerde bu işleri yapan fotoğrafçılar vardı. Günümüzde ise bırakın fotoğrafların yanmasını, çektiğiniz fotoğrafın anında
nasıl göründüğüne bakıp yok “Aaa gözlerim kapalı çıkmış bi daha çekelim” yok “Bu pozu beğenmedim çok itici görünmüşüm sil onu” nevinden geri dönüşler, düzenlemeler yapma şansına sahibiz. Düğün fotoğrafçıları da artık fotoğraf çekmekle değil fotoşopta müşterilerin isteklerini yerine getirmekle meşgul. Hani şu bizi biz gibi görünmekten alıkoyan istekler. Hani yüzünüzdeki beni, kızarıklığı ortadan kaldıran, kilomuzu azaltan istekler. Oysa ki yanık fotoğraflar
öyle değildi. Onlar sadece olanı gösterirlerdi yani bizi biz gibi, olmak istediğimiz gibi değil. Bize benzerdi o fotoğraflar, zihnimize. Kimi yeri karanlık, kimiyeri flu, kimi yeri de berrak. Sanki bize hiçbir şeyin kusursuz olamayacağını anlatırdı bu günkü harika pozların aksine.

Çok değil bundan 10 sene evvelinde vitrinimizin raflarında duran fotoğraf albümünü zaman zaman yerinden çıkarıp
ailecek hatıraları yad ettiğimiz günler yerini dizüstü bilgisayarımızın “My Pictures” ya da diğer bir adıyla “Resimlerim” klasörü altında sakladığımız(”Yok kardeşim ben resimlerimi orada saklamıyorum!” diyerekten itiraz eden olabilir saygı duyarım) piksel topluluklarını yalnız başımıza iç çekerek temaşa ettiğimiz günlere bıraktı. Kimse yanlış anlamasın her ne kadar kimyasal kokulu fotoğrafları sevsem de duyduğum özlem analog fotoğraf makinalarına değil bilakis o karanlık odalardan çıkan hatrıralardaki bilimum güzel değerlere, hayatın kötüymüş gibi görünen eksikliklerindeki güzellikleredir. Hayatın anlamını rütuşlanan renk hücrelerinde değil, yapıştırmalı albümün sayfalarında senelerdir duran sol alt köşesi yanmış fotoğrafta arayanlara selam olsun.
————————————————————————————————————-
Not: Fotoğrafçılıkla ilgili konulardaki teknik desteğini esirgemeyen Soner Avşar’a teşkkürlerimi bir borç bilirim.

Sekkaşı'nın Bayırı - April 15, 2008 05:38 PM
Biletofobi

Önceleri “bilet korkusu” diyesim geldi bu hissiyatıma fakat üzerinde biraz düşününce iç dünyama yerleşenin bir korku değil sadece bir endişe olduğuna kanaat getirdim. Aslında herhangi bir endişenin korkuya iltica etmesinin bir eşik değeri olduğu görüşündeyim. Bu eşik değeri ise hissedenin kendi lebileceğine inanırım. Burada amacım endi?e mi korku mu sorusuna yanıt bulmaktan ziyade bu kaygının sebebine dikkat ekmek ve kendime yandaş aramak.
Acaba benden başka bu duyguyu hisseden, yeryüzünde yüreğinin bir köşesinde bunu taşıyan bir insanoğlu var mı? Peki nedir bu “bilet endişesi/korkusu/kaygısı”? Böyle bir olgunun varlığına kendimi Yalova/Yenikapı 19:30 deniz otobüsü biletime üst üste beşinci kez bakarken yakaladığım anda karar verdim. Evet yanlış okumadınız üst üste tam beş kez. Tekrar, tekrar biletin tarihini, saatini, kalkış yerini, varış yerini, deniz otobüsünde oturacağım koltuğu okuduğumu farkedince bu olayın bende bir saplantı haline geldiği teşhisini koydum kendime. Bunun üstüne “ya gişelerde problem olursa” düşüncesi de peydah olunca düpe düz paranoyaya dönüştü her şey. Şimdilerde şöyle bir mazinin yamaçlarında gezintiye çıktığımda aynı düşüncelerin otobüs yolculuklarında da beni markaj altına aldığını gülümseyerek anımsıyorum. Otobüs yolculuklarında verilen otuz dakikalık molalar da çoğu zaman “ya otobüs beni bırakır da giderse” endişesine sahne oluyor. Gülüyorum zira ne kadar komik bir endişe olduğunun tamamen bilincindeyim ama
çoğu zaman bilincimizle değil hissiyatımızla hareket ettiğimiz için kendime de hak veriyorum. Öyle ya işin ucuna yanlış otobüse binip niyet Konya iken kendini Hanya’da bulmak ihtimali var ne de olsa! Bence psikopatlar pardon psikologlar için yeni bir tez konusu olabilir bu korku. Nitekim güzelim, şirin eklembacaklı örümceklerin bile korkusu oluyor da, o soğuk yazılı biletlerin niye korkusu olmuyor. Biletlerin neyi eksik. Hatta isim bile düşündüm ben bu korkuya “biletofobi” ya da latince adıyla “ticketophobia”. Evet psikoloji camiasına hediyem olsun. Telif hakkı falan da istemiyorum. Değil mi bizim de bilim dünyasına bir katkımız olsun. Hiç öyle gülümsemeyin tezime destek olacak malzemelerim var. Geçenlerde izlediğim orjinal adı “turistas” olan filmde bir turist kafilesinin aracının uçurumdan yuvarlanmasından, organlarının çalınmasına kadar uzanan serüven anlatılmakta. “Ne alaka caným” dediğinizi duyar gibiyim. Hiç alaka olmaz olur mu? Bir düşünsenize otobüs mola veriyor ve sizi mola yerinde unutuyor. Bunu fırsat bilen iç organ mafyası sizi kendine hedef seçiyor. Hatta ve hatta otobüs şöförü ve muavini de bu mafyaya yardım ve yataklık için sizi unutmuş numarası yapıyorlar. Aslında onlar da mafyanın elemanı. Tırstınız değil mi? Bakın bakın tüylerim diken diken oldu.

Sekkaşı'nın Bayırı - March 15, 2008 03:48 PM
JTable İp Uçları

1) JTable Header görünmeme problemi.
Jtable kullanırken tablonun başlığını görebilmeniz için tablonuzun mutlaka
JScrollPane içerisinde gösterilmesi gerekmektedir.

Örnek Kullanım:

booksTable = new JTable();
JScrollPane jsp = new JScrollPane();
jsp.setViewportView(booksTable);

Aksi takdirde direkt olarak başka bir JComponent içerisinde gösterilmek istenirse
tablonun sadece gövde kısmı görülecektir. Eğer tablonun başlık kısmı da gösterilmek istenirse
JTable getTableHeader() metodu ile tablo başlık kısmının da ayrı olarak gösterilmek istenen JComponent
üzerine eklenmesi gerekir.

2) JTableHeader Yüksekliğinin Ayarlanması
Herhangi bir tablonuzun başlık yüksekliğini ayarlamak için öncelikle JTable nesnenizden
JTableHedaer nesnenize getTAbleHeader() metoduyla ulaşıp bu nesne üzerinde setPreferedSize()
metodunu çağırmanız gerekir.

Örnek Kullanım:

Dimension d = booksTable.getTableHeader().getPreferredSize();
d.setSize(d.width,BOOK_TABLE_ROW_HEIGHT);
booksTable.getTableHeader().setPreferredSize(d);

muarifer * ruby, rails ve yazılım geliştirimi üzerine - March 13, 2008 07:37 PM
aptana studio 1.1 radrails 1.0 incelenimi

İlk göz ağrılarımızdan olan RadRails editörünün geliştirimi Aptana’ya geçtikten sonra 1.0 numaralı kararlı sürümü geçenlerde (11 Mart) duyuruldu. Hemmen incelemeye başladım ve ekran görüntüleri eşliğinde bir yazı hazırlamaya çalıştım.

RadRails’i kurabilmek için öncelikle Aptana Studio’nun sisteminizde kurulu olması gerekiyor.
Aptana Studio’da sırasıyla Help > Software Updates > Find and Install menüsüne ulaşıp buradan Search for new features to install seçimini yapıp Next dedikten sonra RadRails’i seçebilir ve kurabilirsiniz.

Yükledikten sonra Aptana Studio’yu kapatıp açmalısınız. Eğer Türkçe bir işletim sistemi kullanıyor iseniz fi tarihinde olan problem hala devam ettiği için -nl en-En parametresini kısayola eklemelisiniz. Ardından yeni bir rails projesine başlayabilir ya da var olan bir projenizi ithal (import) edebilirsiniz.

İlk dikkatimi çeken yeni bir rails projesi oluşturup o projeye geçtiğim halde görünümün (perspective) Rails’e geçmemesiydi. Bu nedenle bunu elle çevirmek durumundasınız. ( Window > Open Perspective > Other > RadRails )

RadRails’in yeni özelliklerine liste halinde karşılaştırmalı (karşılaştırmalar çok yanlı bu arada) olarak buradan bakabilirsiniz. Tabii bu liste de ayrı bir komedi. Zira listede "Eclipse Compability" özelliğinin (!) karşılaştırması da yer alıyor.

Ekran görüntüleriyle bazı özellikler şu şekilde:

 

generator  Generator penceresi ilk sürümden bu yana hemen hemen aynı, görevini layıkıyla yapıyor.

 

hizlibutonlar Kod penceresinde helper/view/model/controller ve test dönüşümleri güzel düşünülmüş. Örn. controllerdan view’a dönerken fonksiyon içerisinde iseniz hangi tür dosya istediğiniz, herhangi bir fonksiyonunun dışında iseniz fonksiyon seçimi ve dosya tipi soruluyor ve yok iseler oluşturuluyor.

h1-editor Rhtm düzenleme ekranında ufaktan xhtml düzenleme butonları yerleştirilmiş. Güzel olmuş.

 

presence

Kod tamamlama özelliği geliştirilmiş, daha fazla dökümansal ayrıntıya yer vermeye başlamış.

 

 

tabilegecis

Tab ile kod tamamlamalar ile geçiş yapılabiliyor.

 

tail

Bu güzel bir özellik. Entegre tail sistemi.

Kelimesel ya da düzenli ifadeler eşliğinde renklendirme özelliği verilebiliyor. Bir editörün içinde bulunması çok güzel.

Tutulası bir özellik.

 

 

 

rails-api

Rails Api ve Ruby Standart Kütüphanesine direkt erişim yapılabiliyor. Böylece yalnızca RadRails üzerinden tüm işlemlerin yapılabilmesi amaçlanmış. IDE’nin anlamını hatırlatıyor gibi bir nevi.

 

 

 

 

railstest test-basarili

Entegre test sistemiyle testlerin sonuçları grafiksel ekranda sunuluyor.

 

 

 

 

 

 

NetBeans, Ruby için destek vermeye başladığından beri NetBeans kullanan ve öncelerinde RadRails kullanmış biri olarak, NetBeans’ın ben de daha ayrı bir güzellik olgusu oluşturduğunu da belirtmek isterim.

Ayrıca, yukarıda adresini verdiğim karşılaştırma tablosuna NetBeans IDE’nin Ruby geliştiricisi olan Tor Norbye tarafından yazılmış ve gerçek dışı/saptırılmış olan bazı özelliklerin gerçeklerine yer verilmiş cevabı okumakta fayda var.

Şimdilik incelediğim özellikler bunlar. RadRails güzel bir aşama kaydetmiş. Daha öncede söylediğim gibi editör savaşları her daim geliştiricilere yarayan bir karşılaşma.

İyi çalışmalar.

NetBeans - March 05, 2008 11:07 PM
SMS Listener'ı olan var mı?

Java projesi beni deli etti, zira bir çözüm bulamıyorum. Altı üstü bir SMS algılayacak! Kulağa ne kadar basit geliyor değil mi? Halbuki kazın ayağı öyle değil. SMS dediğinin bir de portu vardır. Java uygulaması ise her portu dinleyemez, yani algılayamaz. İşte portlar da gizlidir ve olaylar gelişir.

Dört farklı kaynaktan dört adet uygulama buldum fakat dördü de problemli çıktı. O değil de, zaten hepsi aynı tabana sahipler, üç aşağı beş yukarı aynı arayüzleri,aynı sınıfları, aynı kodları kullanıyorlar. Dolayısıyla birbirlerinden çok farklı değiller. Üstelik hepsi de emülatörde süper çalışıyor. Gelin görün ki şimdiye kadar pek çok cep telefonunda denememe rağmen bir tane bile SMS algılatamadım.

Şu ara bununla ilgili koşturuyorum. Lütfen rahatsız etmeyin Sticking out tongue

Bu bunalımlı zamanımda beni yalnız bırakmayıp telefonunu hizmetime açan sevgili Ömer'e sonsuz teşekkürler. "Telefonunu hizmetime açan" dediysem sadece "aramalarıma cevap veriyor" demek istemiyorum. Yaptığım Java uygulamasını denemem için adam bana N-Gage oyun konsolu-cep telefonu karışımı cihazını verdi, daha ne olsun. Arkadaş dediğin böyle olur.

O değil de, şimdilerde bir de Android diye bir şey keşfettim. Keşfettim dediysem, anladım değil, sadece keşfettim. Anlarsam size de anlatırım. Belki benim işime yarar diye şu an bir de onunla meşgul oluyorum. Gördüğüm kadarıyla kendisi bir Eclipse bağımlısı. Dolayısıyla NetBeans'a kuma geliyor (oha ne dedim ben!)

Velhasıl, beni sorarlarsa yokum. Kimseyi bağlama.

NetBeans - February 10, 2008 03:31 PM
Bedava NetBeans 6.0 CDsi Kapınıza Gelsin

Fotoğraf: Jay Adan

NetBeans
Bir Java IDEsi olan NetBeans'in açık kaynak ve beleş olduğunu biliyor muydunuz? NetBEans'i biliyorsanız, bunu da biliyorsunuzdur elbet. Beleş dediğim, yani sitesine gidiyor ve indiriyorsunuz, herhangi bir bedel ödemeden kullanıyorsunuz.

Ama geçenlerde şu sayfada NetBeans6.0 CDsini ücretsiz olarak evinize yolladıklarını okudum ve şansımı deneyeyim dedim. Birkaç gündür eve uğramadığım için tam olarak hangi gün geldi bilmiyorum ama geldi. Şu an elimde. Dizüstü bilgisayarım başka bir yerde olduğu için CDnin içeriğine hemen bakmadım ama üzerinde yazdığına göre Apache Server falan da dahil pek çok şey var.

Heyecanlıyım, şimdi gideceğim. İnternetten uzak birkaç gün daha geçirirken CDde ne var ne yok onlara bir bakayım diyorum.

Bu arada, internetten uzak kalmak bana iyi geldi. Bunu da bilahare irdeleriz.

NetBeans - January 01, 2008 12:08 PM
Altıncı Nesil Fasulye

Şindiki genşler de pek ukela caanım...

Daha önce Netbeans'tan öyle uzaktan bahsetmiştim. Ayrıca, bu herif tank gibi felan demiştim. Sağlam yani. İstesen de bozamıyorsun. Hatta kullanamıyorsun bile. Ben bu NetBeans'ın 5. sürümünü indirmiştim, hem de tam 50 küsür meğabayt. O yetmedi bir de Mobility paketini indircen dediler, o da 70 küsür... Belkim lazım olur, git bi de siydisiy ekini de yükle dediler [CDC] . Hepsi nerdeyse 250 MB tuttu. Neyse ben bunları indirdim yükledim falan, bilgisayar kendinden geçti. Kota sıkıntısı bir yana, Bilgisayar bu kadar yükü kaldıramadı zannımca. Bu husustan ayrıca bahsedeceğim.

Neyse efendim, ben o kadar kasıp NetBeans'in eski sürümünü indirdim, adamlar yeni sürümünü çıkarmasınlar mı? Haydaaa... Neyse ben geçen gün bu meretin yeni neslini de indirdim. O da nerden baksan bi' o kadar var. Eskisini kaldırdım, yenisini yükledim. Güzel bir şey bu NetBeans Mobility hedesi.

J2ME ile program yazacaklara tavsiye ederim.
http://www.netbeans.org

NetBeans - December 08, 2007 01:17 PM
Kuru Fasulyenin Faydaları

NetBeansNetBeans kullanmaya bir ay önce falan başladım. Daha önce JCreator gibi daha basit ve esnek bir IDE (Integrated Development Enviroment) kullanıyordum. NetBeans'a geçince kendimi bir tankın içinde gibi hissettim.

Bir kere sadece açılışı birkaç dakikamı alıyor. Hadi bir proje açacaksınız diyelim, ondan da [birkaç X 10 saniye]ler gidiyor. Halbuki JCreator öyle mi ya? Açılması on saniye ya sürer ya sürmez. Yeni belge açmak Netbeans'a göre yıldırım hızıyla oluyor. Hadi onu da geçtim, Netbeans öyle bir IDE ki, kendi kendine "import ettiği" kütüphaneleri çıkarmaya hayatta izin vermiyor. Üç beş satırlık kendi kafasından döşediği kodları belki ben gereksiz buldum?! Ama yok öyle yağma illa ki benim dediğim olucak, buranın ağası benim diyor NetBeans efendi. İşte bu yüzden tank gibi.

Sırf, cep telefonları için bir proje yazmam gerektiğinden dolayı NetBeans'ı önerdiler. Dediler ki içinde mobility hedeleri felan var, o kendisi herşeyi ayarlar. Biz de şimdi elimiz mahkum, bu fasulyeden tank program Netbeans ile yolumuza devam ediyoruz.

Hayırlısı bakalım. Siz de denemek isterseniz:
www.netbeans.org

muarifer * ruby, rails ve yazılım geliştirimi üzerine - December 03, 2007 12:00 PM
netbeans 6.0 final sürümü yayımlandı

nb-logo-productspage Netbeans’ın 6 numaralı serisinin "final" sürümü e-posta listesinde duyuruldu. Web sayfasında da yakında geniş bir bilgi yer alacaktır. Şimdilik yükleme sayfasını yazabiliyorum.

http://download.netbeans.org/netbeans/6.0/final/

 

Türkçe olarakta çıkmasını istiyordu(m|k) fakat takımdaki kişilerin iş yoğunluğu (4 yahut 5 kişilik bir takım zaten) ve tam olarak organize olamama sebebiyle bu isteğimizi en azından final sürümüne yetiştiremedik. Ama er ya da geç Türkçe bir sürüm çıkacak inşallah.

NetBeans - November 14, 2007 08:33 AM
Netbeans Kurulum Sorunu

Netbeans'ı kurmaya çalışırken aşağıdaki şekilde başlayan bir hata ile karşılaştım:

WARNING:cannot instantiate string resolver method com.installshield.util.LocalizedStringResolver

Bu sorunu çözmek için Denetim Masası'na girip, Bölge ve Dil Seçenekleri'ne tıkladıktan sonra, Bölgesel Seçenekler'den dili İngilizce olarak ayarlamak gerekiyor.

Sorunu çözmekte yardımcı olan Tubim forumundan gokhanaltinsoy adlı kullanıcıya teşekkürler.
http://www.tubim.org/modules.php?name=Forums&file=viewtopic&t=66&start=0...

muarifer * ruby, rails ve yazılım geliştirimi üzerine - November 01, 2007 03:27 PM
çevirgeç - otomatik zemin değiştiricisi

cevirgec.png

Bundan bi’ kaç hafta önce yazmıştım çevirgeç‘i anca atabildim internete.

Nedir?

Çevirgeç, belirtilen klasörlerdeki resimleri belirtilen sürede duvar kağıdı yapar. Tüm resimler duvar kağıdı olana kadar aynı ada sahip dosya bir daha duvar kağıdı olmaz. Süre ise saniye cinsinden belirtilir. Aynı zamanda win32 servisi olduğu için bellekte fazla harcama yapmaz.

Neden?

Bu tür bir çok yazılım piyasada mevcut. Bunların bir çoğunda sonraki resime basınca aynı resim gelebiliyor. Ve yine bir çoğunda süre ayarı için belirli dakikaların altına inme/üstüne çıkma olayları yoktu. Ve yine bir çoğu win32 servisi değildi. Ve yine, …

Aynı şekilde çevirgeç’in eksiklerini konu alan “ve ama” ile başlayan çokca satır da gelebilir.
Ve ama, çevirgeçin ayar penceresi yok, ayarlaması zor.
Ve ama, çevirgeç imagemagick convert.exe’ye bağımlı.
Ve ama, çevirgeçin kontrolü konsoldan ya da “hizmetlerden” yapılmak zorunda.
gibi…

Kurulum

Çevirgeçin kurulumu oldukça kolay ama ayar yapması biraz zor. Ayar programını bir sonraki sürüm için (eğer olursa) yazmayı düşünüyorum. Şimdilik “yaml” dosyasını düzenleyerek bu işlemi yapabilirsiniz.

  • gem install cevirgec komutu ile çevirgeçi kurabiliyoruz.
  • Bu sıralar Rubyforge yansılarında sorun var. Gem paketlerini listelemede sorun oluşuyor. Bu nedenle bu adresten dosyayı bilgisayarınıza kaydettikten sonra konsolda kayıt edilen klasöre girerek yukarıdaki komutu verebilirsiniz.
  • Çevirgeçi hizmetlere kurmak için komut istemcisinde: cevirgec kurulum komutunu verebilirsiniz.
  • Kurulum işlemi bu kadar.

Çevirgeç Ayarları

Çevirgeçi kurduktan sonra ayar yapmak için sırasıyla aşağıdaki yordamları izleyebilirsiniz.

  • Ruby’nin kurulu olduğu dizine girin. (Gezginden)
  • Daha sonra \lib\ruby\gems\1.8\gems\cevirgec-0.1-mswin32\lib\cevirgec klasörüne ulaşın.
  • ayarlar.yaml dosyasını açıp düzenleme yapabilirsiniz.
  • ImageMagick convert.exe programını buradan yükleyebilirsiniz. Ayarlar.yaml dosyasında yerini yüklediğiniz klasör olarak belirtmeyi unutmayınız.

Hmm, acilen ayar programı lazım, satırları yazarken bile yoruyor insanı.

Çalıştırma silme, durdurma

komut istemcisinde:
cevirgec kurulum | baslat | durdur | sil | araver | devam | durum
kurulum: cevirgec’i kurar. baslat: çalışmaya başlatır durdur: çalışmasını durdurur
sil: servislerden çevirgeçi siler. araver: çevirgeçin çalışmasına araverir. devam: yeniden çalışmaya başlatır durum: şu an ne durumdaya cevap verir.

Son;

Program sadece win32 sistemlerde çalışıyor. Ayrıca win32utils paketinden bir kaç bağımlılık bulunuyor. Gem otomatik olarak bunlara dair “kurmak ister misiniz?” sorusu soracaktır. “y” ile devam edebilirsiniz.

muarifer * ruby, rails ve yazılım geliştirimi üzerine - October 24, 2007 07:36 AM
NetBeans 6.0 Beta 2 Yayımlandı

NetBeans’ın kararlı 6.0 sürümüne yaklaşırken 2. Beta sürümü de yayımlandı.

http://download.netbeans.org/netbeans/6.0/beta2/ adresinden yükleme dosyalarını bulabilirsiniz.

NetBeans Türkçe çeviri grubuna hâla kayıt olmadıysanız buradan ayrıntılı bilgiye ulaşabilirsiniz. Bekliyoruz herkesi.

Görüşmek üzere.

muarifer * ruby, rails ve yazılım geliştirimi üzerine - October 18, 2007 11:04 AM
JRuby ile Zemberek Kullanımı (1)

zemberek-jruby-nb.png

Zemberek ülkemizde yazılım adına yapılan en önemli çalışmalardan biridir bana göre. Eğer Pardus ya da OpenOffice kullandıysanız zemberek’in ne denli düzgün çalıştığına şahit olmuşsunuzdur.

Bu yazıda, JRuby[1] üzerinden Zemberek kütüphanelerine erişim konusuna değineceğim.
Sisteminizde JRuby’nin kurulu olduğu varsayılmıştır.
[1] JRuby %100 java ile yazılmış Ruby yorumlayıcısıdır.

Zemberek & JRuby

Öncelikle Zemberek ile çalışabilmek için Zemberek kütüphanelerine sahip olmamız gerekmektedir. Bu kütüphaneye ait dosyaları buradan bulabilir ya da zembereğin tüm modüllerini tek jar dosyası altında toplayan zemberek-tum-2.0.jar dosyasını indirebilirsiniz.

Bu dosyayı Java’nın hali hazırda bulabileceği bir yere kaydedebilir ya da oluşturacağımız dosya ile aynı yere kaydedebilirsiniz. (JRuby’ye require ile kolayca belirtmek için)

Dosyamızı kaydettikten sonra editörümüzü açıp zemberek kullanımına geçebiliriz.

zem.rb

İlk önce JRuby’ye zemberek kütüphanesini dahil etmesini söyleyelim.

require 'java'
 
# zemberek kütüphanemizi dahil edelim
require 'zemberek-tum-2.0.jar'

Zemberek kütüphanesinde kullanacağımız sınıfları projemize dahil edelim.

include_class 'net.zemberek.erisim.Zemberek'
include_class 'net.zemberek.tr.yapi.TurkiyeTurkcesi'

Zemberek için nesnemizi oluşturalım

zembo = Zemberek.new(TurkiyeTurkcesi.new)

Artık şöyle bir kullanım yapabiliriz.

# yazı belirtelim
yazi = ARGV.shift || 'meraba'
 
# belirtlen yazı için öneriler isteyelim
oneriler = zembo.oner(yazi)
 
# önerilerimizi ekrana yazdıralım
puts "#{yazi} icin size #{oneriler.length} tane onerim var:"
oneriler.each_with_index do |oneri, i|
 
puts "Oneri #{i+1}: #{oneri}"
end

Yazının devamında dosyaya ait kaynak kodları bulabilirsiniz.

Kaynak Kod: zem1.rb
require 'java'
 
# zemberek kütüphanemizi dahil edelim
require 'zemberek-tum-2.0.jar'
 
include_class 'net.zemberek.erisim.Zemberek'
include_class 'net.zemberek.tr.yapi.TurkiyeTurkcesi'
 
yazi = ARGV.shift || 'meraba'
 
# Zemberek için nesnemizi oluşturalım
zembo = Zemberek.new(TurkiyeTurkcesi.new)
 
# belirtlen yazı için öneriler isteyelim
oneriler = zembo.oner(yazi)
 
# önerilerimizi ekrana yazdıralım
puts "#{yazi} icin size #{oneriler.length} tane onerim var:"
oneriler.each_with_index do |oneri, i|
 
puts "Oneri #{i+1}: #{oneri}"
end

Yazının bir sonraki sürümünde katarlar üzerinden işlemlerin ruby sınıflarıyla nasıl yapılacağına göz atacağınız inşallah.

muarifer * ruby, rails ve yazılım geliştirimi üzerine - October 17, 2007 07:36 PM
NetBeans Hızlandırımı

NetBeans açılışı biraz uzun sürüyor ve biraz çalıştıktan sonra hafiftan kasılmaya başlıyorsa netbeans için heap size ayarlamasının zamanı gelmiş demektir.

  • Netbeans’un kurulduğu dizinde bulunan “etc” klasörüne giriyoruz.
  • netbeans.conf dosyasını açıyoruz.
  • -J-Xms32m yi -J-Xms256m ile değiştiriyoruz. (Açılışta 256m ram ile başlıyor)
  • -J-Xmx512m ile istersek üst sınırı da belirleyebiliyoruz. (Netbeans otomatik olarak bizim için seçiyormuş normalde)
  • -J-XX:PermSize yi de arrtırarak kalıcı hafıza oluşumunu arttırabiliriz. Buna mukabil -J-XX:MaxPermSize de arttırılmalı.

Ayrıca NetBeans.conf dosyasın yapılandırılması ile ilgili daha fazla bilgiyi burada yer alıyor.

muarifer * ruby, rails ve yazılım geliştirimi üzerine - October 17, 2007 08:33 AM
Detaylı NetBeans Ruby İncelemesi

30 Ağustos’ta yayımlanmış bir yazı, diğer editörlerle de ufak bir karşılaştırma yapılmış. Şimdiye kadar gözden kaçmış bir inceleme olmasına üzüldüm.

Buradan ulaşılabilir: Netbeans THE best ruby on rails IDE

muarifer * ruby, rails ve yazılım geliştirimi üzerine - October 15, 2007 07:58 PM
TurkceRb

TurkceRb projesinin yeni sürümünü yakında sunacağım inşallah. Gem paketini kurduktan sonra require “turkce” require “turkce_rails” diyerek kullanabileceğiz, ayrıca rails ile ruby modülleri de ayrılacak. Konu hakkında daha detaylı girdiyi gem paketini oluşturduktan sonra (süresi belli değil henüz) detaylıca yazacağım inşallah.

Yeni sürümü beklemeden “yaziya_cevir” fonksiyonunu siteden paylaşmayı uygun gördüm.

yaziya_cevir_resim.png

yaziya_cevir

Verilen sayıyı yazıya çeviren bir fonksiyon. Örnek olarak

puts 11221312755123.yaziya_cevir
=>
OnBirTrilyonİkiYüzYirmiBirMilyarÜçYüzOnİkiMilyonYediYüzElliBeşBinYüzYirmiÜç

Yazının devamında kaynak kodlarını bulabilirsiniz.

Kaynak Kod: yaziya_cevir.rb
# yardımcı bir fonksiyon (mod + div)
class Fixnum
 
def adet(bolum)
   
# renklendirme wordpress sorun çıkarttığı için "div" kullanıldı
   
# i = self / bolum
   
i = self.div bolum
   
i += 1 if self % bolum > 0
   
return i
 
end
end 
 
# turkcerb.rubyforge.org
# murat.celiker@gmail.com ,  15 ekim 2007
#
module TurkceRb
 
module Yazisal
 
   
require "enumerator"
 
   
BIRLER = 1
   
ONLAR  = 2
   
YUZLER = 3
   
BASAMAK_ALT_ADET = 3
 
   
SAYILAR =  { :birler => %w( Bir İki Üç Dört Beş Altı Yedi Sekiz Dokuz) ,
      :
onlar  => %w( On Yirmi Otuz Kırk Elli Altmış, Yetmiş Seksen Doksan ) ,
      :
diger  => %w( Yüz Bin Milyon Milyar Trilyon Katrilyon Katrilyar ) 
    }
 
   
def yaziya_cevir
     
str = self.to_s
     
uzunluk = str.length
 
     
1.upto(BASAMAK_ALT_ADET - (uzunluk % BASAMAK_ALT_ADET)) { str.insert(0, '0') } if uzunluk % BASAMAK_ALT_ADET > 0
     
dizi, a, uclu_basamak = str.split(//), "", 0 
 
     
dizi.each_slice(BASAMAK_ALT_ADET) do |i|
       
a += basamak_degeri(i, dizi.length.adet(BASAMAK_ALT_ADET) - uclu_basamak)
       
uclu_basamak += 1
     
end
     
     
return a 
   
end
   
   
def basamak_degeri(dizi, basamak)
     
don = ""
     
dizi.each_index { |i| don += uclu_sayi_degeri(dizi[i].to_i, BASAMAK_ALT_ADET - i ) if dizi[i].to_i > 0 }
     
don += SAYILAR[:diger][basamak - 1] if basamak >= 2 && !don.empty?
     
return don
   
end 
   
private :basamak_degeri
   
   
def uclu_sayi_degeri(sayi, basamak)
     
case basamak
     
when BIRLER: return sayi_degeri(sayi)
     
when ONLAR: return sayi_degeri(sayi, :onlar)
     
when YUZLER: return yuzler_sayi_degeri(sayi) 
     
end
   
end
   
private :uclu_sayi_degeri
   
   
def sayi_degeri(i, basamak=:birler)
     
SAYILAR[basamak][i-1]   
   
end
   
private :sayi_degeri
 
   
def yuzler_sayi_degeri(i)
     
return "#{sayi_degeri(i) if i > 1}#{SAYILAR[:diger][0]}"
   
end
   
private :yuzler_sayi_degeri
 
 
end
end

String sınıfına, Integer sınıfına dahil edebilirsiniz.

class Integer
 
include TurkceRb::Yazisal
end
 
class String
 
include TurkceRb::Yazisal
end

Örnek Kullanımlar

puts 11221312755123.yaziya_cevir
puts "028282".yaziya_cevir

muarifer * ruby, rails ve yazılım geliştirimi üzerine - October 12, 2007 02:14 PM
NetBeans 6.0 Türkçe Çeviri Grubu

NetBeans 6.0 tüm dillere çevrilmek üzere katılımcılar arıyor. Bunlardan biri de elbette Türkçe.

Yapmanız gerekenler şurada anlatılıyor, özet geçmek gerekirse:
Öncelikle e-posta listesine üye olmalısınız. Bunun için “dev-subscribe@translatedfiles.netbeans.org” adresine ad-soyad,kullanıcı adınız,Türkçe çeviri yapmak istediğiniz ve - opsiyonel - ilgilendiğiniz konuları yazıp göndermeniz, sonrasında gelecek onay epostasına cevap vermeniz gerekiyor. Daha sonrasında listeye bir mesaj atarak “geldiğinizi” bildirirseniz faydalı olacaktır.

Şu an Türkçe çeviri grubu bir ara görünüp kaybolmuş söylenilene göre (eposta yöneticisi tarafından). İnşallah güzel organize olarak çeviriye başlayabiliriz. Sayfalarınızda bildiriye yer vererek yardım sağlayacak arkadaşların da aramıza katılmasını sağlayabilirseniz bu güzel editörün çevirisi için çalışmalara hemen başlayabiliriz.

Ayrıca Netbeans hakkında yazı yazan arkadaşlar “Planet NetBeans“a üye olabilirler. Bunun için NetBeans Gezegeninde yönergeler yer alıyor.

Bu arada, NetBeans gerçekten çok güzel bir editör. “Yüzyılın editörü” tabirini haketti benim tarafımda.

muarifer * ruby, rails ve yazılım geliştirimi üzerine - October 09, 2007 12:45 PM
Ruby Dark Pastels, NetBeans Renklendirimi

Piyasaya çıkmış olan tüm Ruby destekleyen editörleri denemeye çalışıyorum. Zaman zaman bunların değerlendirmesini bu sayfada yayımlıyorum.

Uzunca bir süre kodlamalar için Eclipse üzerine RDT ve RadRails pluginlerini kurup işlerimi öyle hallettim. Zira RadRails güncel RDT sürümünü kullanmadığı için otomatik kod tamamlama ve folding olayları kendi içerisinde gelmiyordu.

Fakat son zamanlarda tüm ruby kodlamalarımı NetBeans üzerinden yapıyorum, halen ilk deneme sürümü olmasına rağmen şu anki hali bile kullanımda büyük kolaylık sunuyor. Eğer hala denemediyseniz sadece Ruby paketini içeren NetBeans sürümünü (19 MB) yükleme sayfasında bulabilirsiniz.

Gelelim yazının asıl konusuna, Ruby için “Dark Pastels” renklendirmesi yayımlandı dün, kod yazarken koyu zeminlerden hoşlanıyorsanız tavsiye ederim.

uzun-purdy.png

Kurmak için buradaki dosyayı bilgisayarınıza kaydettikten sonra, NetBeans ana menü barında “Tools > Plugins” menüsünden “Downloaded” tabını seçip “Install” düğmesine basarak eklentiyi kurabilirsiniz. Daha sonra “Options” menüsü altında bulunan “Font & Colors” sekmesinden Ruby Dark Pastels profilini seçip, NetBeans’ı yeniden başlattıktan sonra yeni renk düzeninize geçilmiş olacaktır.

Shift+ESC bir de üstüne Alt+Shift+Enter yaparsanız, tadından yenmez oluyor.

Sekkaşı'nın Bayırı » NetBeans - July 26, 2007 07:59 PM
NetBeans Javadoc Entegrasyonu

NetBeans 5.5 versiyonu için geçerlidir.

Java ile uygulma geliştirenler için başucu kaynağı niteliğindeki JDK Javadoc dökümantasyonuna erişim bu işin olmazsa olmazları arasındadır. Erişimle beraber dökümantasyonda aradığını anında bulabilme ve alabildiğine geniş onlarca dökümanı düzgün bir şekilde kontrol etmekte projelerin sağlıklı yürütülmesi açısından önemlidir. Bu yazıda kullandığımız herhangi bir java API’sinin dökümantasyonuna NetBeans’den nasıl erişeceğimizi öğreneneceğiz.

1) Öncelikle temel olan Java Platform Javadoc’unu NetBeans’e eklemeliyiz. Bunun için Tools->Java Platform Manager menüsünü seçin.

2) Karşınıza çıkan pencereden önce sol taraftan Javadoc eklemek istediğiniz platformu seçin ve Javadoc sekmesini tıklayıp Add ZIP/Folder tuşuna basarak JDK’nıza ait Javadoc klasörünün veya zip dosyasının yerini bildirin.

NetBeans Java Platform Manager

3) Eğer JDK için değil de herhangi bir dış kaynaklı kütüphane kullanmak istiyorsanız ikinci adımı Tools->Library Manager seçerek tekrarlayın.

4) Javadoc’larımızı NetBeans’e tanıttıktan sonra kod yazarken hızlı bir şekilde ulaşmak için aramak istediğimiz sınıfın veya methodun ismini editörde işaretledikten sonra Shift+F1 tuş kombinasyonunu kullanabiliriz. Bir diğer yöntem ise Tools->Javadoc Index Search menüsünü kullanmaktır.

NetBeans Javadoc Index Search

Suat ATAN * KARALAMA DEFTERİ » NetBeans - May 01, 2007 08:54 PM
Netbeans Visual Web Pack ile veritabanı işlemlerinde sıkça karşılaşılan bir sorun hakkında


Netbeans Visual Web Pack ile Veritabanı işlemlerinde; herhangi bir veritabanını kullanmak için malum olduğu üzere önce veritabanı bağlantısı Runtime penceresi altından kurulup istenen tablo sürükle-bırak yöntemi ile sayfa içine çekilir.
Daha sonra istenen bir form elemanına sağ tıklanıp “Bind to Data” diyilerek veriler bu form elemanına bindirilir.
Bu yöntemi tutoriallerde uzun uzadıya anlatırlar. Ancak hep es geçilen önemli bir sorun vardır.
MySQL veritabanı bağlantısı kurulurken bu işlemde “Bind to Data” işleminden sonra Netbeans tablo sütün adlarını okuyamaz ve adamı illet eder.
Bu durumdan kurtulmanın yolu şudur:
Netbeansa entegre Tomcat sunucusna ait klasörlere ulaşılıp bunun altındaki “common” klasörü altındaki lib klasörüne MySQL bağdaştırıcsına ait jar dosyası konulur.
Mesela ben MySQL resmi sitesinden indirdiğim: mysql-connector-java-5.0.5-bin.jar dosyasını
C:\Program Files\netbeans-5.5_withJDK1.6.0\enterprise3\apache-tomcat-5.5.17\common\lib

dizinine yerleştirdim. Bunun yanında Netbeans’ta project menüsünden de library altına da aynı jar dosyasını ekledim.
Bu illet de böylece çözülmüş oldu.
Bu sorunun çözümünü esasen Java Üstadım ve kardeşim Bahadır ŞAYLAN yaptı.
(Bu sorunu bu minval üzerine halleylen her kişi üstat ruhuna bir fatiha okuya, gaflet olunmaya:)

Suat ATAN * KARALAMA DEFTERİ » NetBeans - March 21, 2007 12:27 PM
Netbeans’ta JSlider(Slider) Kullanımı



Java programcılığı yaparken son kullanıcı için özellikle hızlı biçimde herhangi bir değer değişikliği yapmak istenildiğinde Slider’ler kullanılır. Resimde örneği görülen JSlider 0 ila 30 arasında saniyede değişecek kare hızını değiştiriyor.

Sizler de Netbeans içinde JSlider kullanarak benzer ve kullanışlı şeyler geliştirebilirsiniz.

JSlider’in Netbeansta kullanımı çok kolaydır.

Aşağıdaki yönergeleri takip ederek resimde görülen JSlider benzeri bir amaca hizmet eden bir obje yaratabilirsiniz.

  1. Öncelikle Netbeans Palette menüsünden Swing alt menüsü içerisinden (jbuton, jtextfield gibi objelerin seçildiği alan) JSlideri seçiyoruz.
  2. Bu obje seçili durumda iken properties menüsünden Max Value ve Min Value yazan yerlere Max Value(en büyük değer) olarak 30 Min Value (En küçük değer olarak) 0 yazıyoruz. Bunun anlamı JSliderimiz her sürüklendiğinde 0 ila 30 arasında değişecek.
  3. Şimdi Netbeans klasiği olarak yine Jslider objesi seçili iken sağ tıklayıp events menüsünden change alt menüsünü oradan da StateChanged tıklayıp JSlider sürüklendiğinde yapılacak işlemi tanımlamaya başlıyoruz.
  4. Aşağıdaki kod 3. maddede anlatılan ve JSliderin sürüklenmesi ile dinamik olarak değerin nasıl alınıp kullanılacağını göstermektedir: ——————-
    public void stateChanged(ChangeEvent e) {    JSlider dinamikdeger= (JSlider)e.getSource();    if (!source.getValueIsAdjusting()) {        int fps = (int)dinamikdeger.getValue();        if (fps == 0) {            if (!frozen) stopAnimation();        } else {            delay = 1000 / fps;            timer.setDelay(delay);            timer.setInitialDelay(delay * 10);            if (frozen) startAnimation();        }    }}
    
    ---------
  5. Yeşil ile yazılan kısımlara dikkat edilecek olursa öncelikle dinamikdeger adlı bir JSlider objesi yaratılıyor. Bunu her seferinde siz de yapacaksınız.
  6. Daha sonra bu deger .getValue() metodu ile alınıyor. Bu metot sonucunda ortaya çıkan Integer değer JSliderin sürüklenip bırakıldığı andaki 0 ile 30 arasındaki (tabi bizim uygulamamız içinde) değerdir.
  7. Bu değer yukarıdaki programda fps adlı değişkene yüklenip program içinde animasyon hızı olarak kullanılıyor.
  8. Max ve Min Value değerleri eksi işaretli de olabili söz gelimi -250 ila +250 arasında da JSlider yapılabilir.

İşte JSlider bu kadar basit ve kullanışlı bir objedir. Bu objeyi kullanırken oluşan problemler için mesajlarınızı bekliyoruz.