SWT ile program yazmayı düşünüyorsanız öncelikle çeşitli araç gereçlere ihtiyacınız olacak.
İlk olarak son sürüm Java JRE ya da Java SDK indirmeniz ve kurmanız gerekli, daha sonra swt kütüphanesini http://www.eclipse.org/swt adresinden stable sürümden (31 ekim itibarı ile 3.3 versiyonu stable 3.4 development versiyonudur) uygulamayı geliştirdiğiniz sisteme (windows xp, linux gibi) uygun swt paketini indirin.
Bundan sonra yapmanız gereken kodunuzu yazıp, derleyip çalıştırmaktır.
SWT programları sıra ile en az şu adımlara ihtiyaç duyar :
-bir Display nesnesi yaratmak
-1 ya da 1 den fazla Shell yaratmak
-Shell nesnesinin yerleşim yöneticisini ayarlamak (layout manager)
-Shell nesnesi içinde görünecek widget'leri yaratmak
-Shell penceresini açmak (open)
-Olay yönetim kodunu yazmak
-programdan çıkarken Display nesnesini dispose etmek.
Örnek kod şu şekildedir :
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Test
{
public static void main(String args[])
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout( new RowLayout());
// ------------------------
// Sizin kodunuz buraya
// ------------------------
shell.pack();
shell.open();
while( !shell.isDisposed())
{
if(!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
Yukarıdaki kodu Test.java dosyasına kaydedip derlemeliyiz, bunun için konsolda javac -cp swt_jara_giden_tam_yol/swt.jar Test.java komutunu vermeliyiz. Yani "-cp" parametresi ve swt.jar'ın tam yolunu vererek swt.jar'ı classpath içine alırız böylece Shell, Display gibi tanımlamarı java tanır ve sorunsuz derler.
En sonda Test.class oluşacaktır (bir aksilik olmadıysa) çalıştırmak için java -cp swt_jara_giden_tam_yol/swt.jar:. Test komutunu veririz ve ilk swt programımızı çalıştırmış oluruz.
Bu aşamalarda çıkabilecek tek sorun swt.jar'ın java tarafından görülmemesidir ve bunun nedeni de swt.jar'ın classpath içinde olmamasıdır, yani classpath ile ilgili parametreleri ve yolları kontrol ederseniz sorunu bulursunuz, eğer çok sıkışırsanız swt.jar dosyasını java_ana_dizini/jre/lib/ext içine atın ve hiç java -cp paramtresi vermeden "javac Test.java" diyebilirsiniz çünkü java_ana_dizini/jre/lib/ext dizini javanın başlarken baktığı varsayılan dizinlerdendir böylece swt.jar otomatik olarak tanınır. Fakat bu son dediğimi yaparsanız yeni bir swt sürümü yüklediğinizde başınızı ağrıtabilir bu yüzden swt.jar'ı mümkün olduğunca /lib/ext altına almayın.
31 Ekim 2007 Çarşamba
28 Ekim 2007 Pazar
Eclipse SWT
SWT yani Standard Widget Toolkit, java Swing kütüphanesinin yavaşlığına çözüm getirmek amacıyla dizayn edilmiş bir GUI kütüphanesidir.
SWT platform bağımsız bir kütüphanedir yani yazdığınız SWT programları Windows, Linux ve MacOs platformlarında aynı görünecektir, ama tamamen aynı değildir. Görsellik işletim sisteminin genel yapısına uygun şekildedir.
SWT temelde işletim sistemine ait doğal GUI kütüphanesinin üzerine inşa edilmiş bir java kütüphanesidir. Yani Windowsta win32 Linuxta GTK ve MacOs ta adını bilmediğim doğal GUI kütüphanesini kullanarak hem işletim sistemine uygun görünüm hem de doğal nesnelerin hızlılığını sağlar.
İlerleyen yazılarımda SWT ile ilgili daha detaylı anlatımlar, kod örnekleri vs. sunmaya çalışacağım. SWT yi önemsiyorum çünkü geleceğin işletim sistemi Linux için daha fazla yazılım geliştirilmesini hedefliyorum ayrıca SWT programları Windows üzerinde de çalışabildiği için yazılan programların ticari yönden bir kaygısı olmayacaktır.
Son bir not Eclipse IDE'sinin yazıldığı görsel kütüphane swt'dir, yani swt'nin gücünün kanıtıdır Eclipse IDE'si.
SWT nin resmi adresi : www.eclipse.org/swt/'dir
SWT platform bağımsız bir kütüphanedir yani yazdığınız SWT programları Windows, Linux ve MacOs platformlarında aynı görünecektir, ama tamamen aynı değildir. Görsellik işletim sisteminin genel yapısına uygun şekildedir.
SWT temelde işletim sistemine ait doğal GUI kütüphanesinin üzerine inşa edilmiş bir java kütüphanesidir. Yani Windowsta win32 Linuxta GTK ve MacOs ta adını bilmediğim doğal GUI kütüphanesini kullanarak hem işletim sistemine uygun görünüm hem de doğal nesnelerin hızlılığını sağlar.
İlerleyen yazılarımda SWT ile ilgili daha detaylı anlatımlar, kod örnekleri vs. sunmaya çalışacağım. SWT yi önemsiyorum çünkü geleceğin işletim sistemi Linux için daha fazla yazılım geliştirilmesini hedefliyorum ayrıca SWT programları Windows üzerinde de çalışabildiği için yazılan programların ticari yönden bir kaygısı olmayacaktır.
Son bir not Eclipse IDE'sinin yazıldığı görsel kütüphane swt'dir, yani swt'nin gücünün kanıtıdır Eclipse IDE'si.
SWT nin resmi adresi : www.eclipse.org/swt/'dir
26 Ekim 2007 Cuma
Linux'ta program kurma
Linux’ta program kurmak windowstaki gibi bir setup.exe yi çalıştırma şeklinde değildir.Çeşitli yöntemler vardır en yaygın yöntem bir paket yöneticisi kullanmak.
Paket yöneticisi adını kurduğu paketlerden alır.Linux dağıtımları genelde kendi paket sistemleri ile ya da kalitesi kanıtlanmış paket yöneticileri ile gelir.Paket tiplerinin en yaygınları RPM,DEB ve Tar.Gz dir.RPM SUSE ve RedHat’ın varsayılan paket tipidir,DEB Debianın ve Tar.Gz fazla bilmiyorum ama Slackware’in.
Paketlerin derinlemesine incelersek onalrın aslında sıkıştırılmış dosyalar olduklarını öğreniriz,yani gz ya da zip gibi bir formatla sıkıştırılmış dosyalardır ve içlerinde genel olarak binary formda direkt çalıştırmaya hazır (yani önceden derlenmiş dosyalar) vardır,ayrıca bu binary dosyaların yanında bu dosyanın gereklilikleri ve adı gibi paket yöneticisinin paketi kurarken gerek duyacağı bilgileri taşıyan diğer dosyalar vardır.
Paket yöneticisi paketi açar ve içerisindeki bilgi dosyasındaki yönergelere göre kurulması gereken diğer kütüphane ya da programları kurar ya da siler , tabi bunu yaparken kullanıcıyı önceden uyarır ki daha sonradan sorun yaratmasın.
Linuxta program kurmanın diğer yöntemi ise kaynak koddan yapılan kurulumlardır.İnternetten bulduğunuz bir kaynak kodu kurmak istiyorsanız izlemeniz gereken yöntem yüksek ihtimalle aynıdır : Önce ./configure ile Makefile adı verilen dosyanın yaratılmasını sağlamak,daha sonra make ile derlemeyi gerçekleştirmek ve son olarak make install diyerek derleme sonucunda çıkan binary dosyaları gerekli yerlere kopyalanmasını sağlamak son komutu verirken genelde root olmanız gerekir çünkü kopyalama yapılan klasörler genelde /usr/local /usr/share gibi klasörlerdir ve bu klasörlerin yazma erişimi sadece root ve grubuna açıktır.
./configure
make
make install
bu 3 ü bir standart gibidir.Bazen direkt make demeniz yetebilir bunu bulduğunuz kaynak kodunun olduğu klasörün içinden anlayabilirsiniz.
Kaynak kodundan derleme işlemi parametize edilebilir yani isterseniz make install sonucunda binary dosyaların kopyalanacağı klasörü seçebilirsiniz bunun için ilk komutu ./configure prefix=/kopyalama/yapilacak/klasor/yolu komutu ile değiştirin,eğer binary dosyaları bir yere kopyalamak istemiyorsanız ./configure ve make dedikten sonra kaynak kodun olduğu klasörün içinde genelde src içinde binary dosyalar yer alır bunları alıp istediğiniz gibi kullanabilirsiniz.
Son olarak, paketleri kurmak için sisteminizdeki ana paket tipini öğrenip bunu kullanan araç hakkında döküman okumanız yeterlidir,kaynak koddan kurulum yapmak için ise sisteminizde gcc kurulu olmalıdır,ayrıca automake ve autotools isimli araçalrında kurulu olması gereklidir.Tabi kurmaya çalıştığınız programların istediği kütüphaneler de olmalı ki kurulum yapılabilsin.
Paket yöneticisi adını kurduğu paketlerden alır.Linux dağıtımları genelde kendi paket sistemleri ile ya da kalitesi kanıtlanmış paket yöneticileri ile gelir.Paket tiplerinin en yaygınları RPM,DEB ve Tar.Gz dir.RPM SUSE ve RedHat’ın varsayılan paket tipidir,DEB Debianın ve Tar.Gz fazla bilmiyorum ama Slackware’in.
Paketlerin derinlemesine incelersek onalrın aslında sıkıştırılmış dosyalar olduklarını öğreniriz,yani gz ya da zip gibi bir formatla sıkıştırılmış dosyalardır ve içlerinde genel olarak binary formda direkt çalıştırmaya hazır (yani önceden derlenmiş dosyalar) vardır,ayrıca bu binary dosyaların yanında bu dosyanın gereklilikleri ve adı gibi paket yöneticisinin paketi kurarken gerek duyacağı bilgileri taşıyan diğer dosyalar vardır.
Paket yöneticisi paketi açar ve içerisindeki bilgi dosyasındaki yönergelere göre kurulması gereken diğer kütüphane ya da programları kurar ya da siler , tabi bunu yaparken kullanıcıyı önceden uyarır ki daha sonradan sorun yaratmasın.
Linuxta program kurmanın diğer yöntemi ise kaynak koddan yapılan kurulumlardır.İnternetten bulduğunuz bir kaynak kodu kurmak istiyorsanız izlemeniz gereken yöntem yüksek ihtimalle aynıdır : Önce ./configure ile Makefile adı verilen dosyanın yaratılmasını sağlamak,daha sonra make ile derlemeyi gerçekleştirmek ve son olarak make install diyerek derleme sonucunda çıkan binary dosyaları gerekli yerlere kopyalanmasını sağlamak son komutu verirken genelde root olmanız gerekir çünkü kopyalama yapılan klasörler genelde /usr/local /usr/share gibi klasörlerdir ve bu klasörlerin yazma erişimi sadece root ve grubuna açıktır.
./configure
make
make install
bu 3 ü bir standart gibidir.Bazen direkt make demeniz yetebilir bunu bulduğunuz kaynak kodunun olduğu klasörün içinden anlayabilirsiniz.
Kaynak kodundan derleme işlemi parametize edilebilir yani isterseniz make install sonucunda binary dosyaların kopyalanacağı klasörü seçebilirsiniz bunun için ilk komutu ./configure prefix=/kopyalama/yapilacak/klasor/yolu komutu ile değiştirin,eğer binary dosyaları bir yere kopyalamak istemiyorsanız ./configure ve make dedikten sonra kaynak kodun olduğu klasörün içinde genelde src içinde binary dosyalar yer alır bunları alıp istediğiniz gibi kullanabilirsiniz.
Son olarak, paketleri kurmak için sisteminizdeki ana paket tipini öğrenip bunu kullanan araç hakkında döküman okumanız yeterlidir,kaynak koddan kurulum yapmak için ise sisteminizde gcc kurulu olmalıdır,ayrıca automake ve autotools isimli araçalrında kurulu olması gereklidir.Tabi kurmaya çalıştığınız programların istediği kütüphaneler de olmalı ki kurulum yapılabilsin.
20 Ekim 2007 Cumartesi
SWT yavaş text girişi sorunu
Eğer programlarınız SWT ile yazıyorsanız ve programınızda bir text ya da benzeri giriş alanı kullanıyorsanız, bazen giriş alanları tuhaf davranışlar segiler : girdi fare hareketinden sonra gelir, girdi bir kaç sn gecikme ile gelir vs.
Bu durumun sebebi kodunuzda yer alan
while(!shell.isDisposed()){
if(disp.readAndDispatch()){
disp.sleep();
}
}
gibi işletim sisteminden olayları alıp ilgili görsel nesneye gönderen kodda yer alan bir mantık hatasından dolayı olma ihtimali yüksektir
Buradaki hata disp.readAndDispatch() fonksiyonunun başında unutulan ! mantıksal tersleyici işarettir.
Düzgün kod şu şekilde olmalıydı :
while(!shell.isDisposed()){
if(!disp.readAndDispatch()){
disp.sleep();
}
}
Bu sorun kolay görülmez bu yüzden burada yazdım ki aynı sorundan muzdarip iseniz fazla aramadan bulun.
Bu durumun sebebi kodunuzda yer alan
while(!shell.isDisposed()){
if(disp.readAndDispatch()){
disp.sleep();
}
}
gibi işletim sisteminden olayları alıp ilgili görsel nesneye gönderen kodda yer alan bir mantık hatasından dolayı olma ihtimali yüksektir
Buradaki hata disp.readAndDispatch() fonksiyonunun başında unutulan ! mantıksal tersleyici işarettir.
Düzgün kod şu şekilde olmalıydı :
while(!shell.isDisposed()){
if(!disp.readAndDispatch()){
disp.sleep();
}
}
Bu sorun kolay görülmez bu yüzden burada yazdım ki aynı sorundan muzdarip iseniz fazla aramadan bulun.
Kaydol:
Yorumlar (Atom)