Java ile Cmyk ve Rgb Değerleri

Ocak 3, 2012

 

Merhaba arkadaşlar bu yazının konusu başlıktanda anlaşılacağı gibi java, çok uzun zaman önce bir arkadaşımın isteği üzerine .Net te yaptığım uygulamanın aynısını java ile yapmaya karar verdim (sebebi tamamen can sıkıntısı ve .Net ortamından biraz uzaklaşıp kafa dağıtmak diyebilirim).Uygulamayı tasarımcı bir arkadaşım için yapmıştım, uygulamanın yaptığı ise şuydu : Mouse ile o an üzerinde olunan noktanın renk değerlerinin cmyk ve rgb değerlerini sayısal ve anlık olarak  vermesi.Güzel bu işlem bir .Net developer için çok kolay tabiki kodlama .Net de yapılacaksa :) ama uygulamayı java ile yapmaya karar verdiğimde bu işlem için yarım saat fazla kod yazmam gerekti.Uygulama formu’nda cmyk ve rgb değerlerini kullanıcıya gösterebileceğimiz 7 tane JTextField , 1 tane JButton ve JLabel olacak.JButton’a basıldığı zaman uygulama çalışmaya başlayacak ve o an mouse’nin olduğu noktanın değerlerini kullanıcıya gösterecek taki kullanıcı tam değerlerini istediği noktanın üstüne gelip tıklayıncaya kadar o anda uygulamamız duracak ve değerler sabitlenecek buradaki amaç kullacının o değerleri not etmesi veya çalışması sırasında kullanması 7 tane değeri aklında tutmak zor olduğu için bu şekilde bir yol izliyoruz.Uygulama eclipse üzerinde geliştirilmiştir.CMYK adında bir tane java app. oluşturalım ve 2 tane sınıf ekleyelim ilk sınıfımız Main yani ana sınıfımız diğeri ise işlemleri yaptırmak için kullanacağımız Hesap sınıfı.Sınıflarımızı şu şekilde oluşturuyoruz CMYK > src > (default package)   dosyasına sağ tık > New > Class . Sınıflarımızı oluşturduktan sonra Main sınıfımızı şu şekilde kodluyoruz

 

 

 

 

Hesap sınıfımız JFrame sınıfından türemiştir.Hesap sınıfımızın instance’ını oluşturuyoruz ve gerekli atamaları yapıyoruz.Formun boyutunu setSize method’u ile formun ekranın neresinde konumlanacağını ise setLocation method’u ile setIconImage method’u ile ico.png dosyamızı uygulamamızın icon’u olarak ayarlıyoruz daha sonra setResizable method’u ile formumuzun sabit kalmasını ayarlıyoruz ve en son olarakda  setVisible true değerini atıyoruz ve formumuz çalıştığı zaman ekranın sol üst köşesinde başlıyacaktır.Uygulamızın içerisinde icon dosyamızı tutmak için Image klasör’ünü oluşturalım ve içerisine ico.png dosyamızı yerleştirelim.Hesap sınıfımız

 

 

 

 

Global olarak uygulamamızda kullanacağımız değişkenleri tanımlıyoruz. Robot sınıfını mouse’umuzun olduğu noktanın bilgisini almak için kullanıyoruz. cevrimKontrol değişkenini ise kullanıcının o an programın durmasınımı yoksa çalışmasınımı istediğini anlamak için kullanacağız.Kullanıcı formun dışında bir noktanın değerlerini almak isteyeceği için formun dışarısında herhangi bir yere tıklandığı zaman uygulamamız bunu algılayıp kendisi durması lazımki kullanıcının tıkladığı noktanın renk değerlerini sabitleyebilelim bu işlemide windowDeactivated event’inde yapıyor olacağız.Uygulamamızın formunu şekillendirelim

 

 

 

 

super(“CMYK”) diyerek uygulama başlığımızı ayarlıyoruz, setLayout(null) diyerek formun yerleşim planını kendimizin yapacağını belirtiyoruz daha sonra form aktifliğini yitirdiği zaman koda müdahele etmemiz gerektiği için window eventlerini dinlemeye alıyoruz addWindowListener(this) diyerek.Mouse’un bulunduğu noktanın renk değerlerini uygulamamızda ekrana yazdırabilmek için anlık olarak yeni bir tane Thread sınıfından türemiş sınıf yazıyoruz adı ClassThread ve thread ‘imizi start() diyerek başlatıyoruz ki bir yandan uygulamamız çalışırken bir yandan da thread uygulamamızı hiç aksatmadan çalışarak istediğimiz değerleri bize getirsin.Daha sonra form’un sağ alt köşesine bir tane JLabel yerleştiriyoruz  location ve size değerlerini belirtip add(labelUrl) diyerek formumuza ekliyoruz ve mouseClicked eventinde blog sitemi açtırmasını sağlıyorum ama burada dikket etmemiz gereken bir nokta siteyi browser’da açabilmek için cmd.exe kullandım tahmin edebileceğiniz gibi bu kod sadece windows tarafında çalışacaktır.

 

 

 

 

Form’umuzda bulunacak tüm kontrolleri ekliyoruz.JButton’un ise actionPerformed(click) event’inde cevrimKontrol değişkenimize true değerini atıyoruz ve text özelliğinede Çalışıyor yazdırıyoruz.Bu işlem ile kullanıcı ne zaman buton’a basarsa uygulamamız o zaman istenen değerleri getirecektir.

ClassThread sınıfımızı yazalım

 

 

 

 

 

Thread ‘imiz formumuz çalıştığı anda çalışmaya başlıyacaktır yanlız cevrimKontrol değişkenimizin default değerini false olarak atadığımız için if içerisindeki asıl kodlarımız çalışmayacaktır. while döngümüz içerisine true değeri atandığı için sürekli çalışıp bu kontrolü yapacaktır,  kullanıcı ne zaman buton’a basarsa cevrimKontrol değişkeni true değeri alacağı için kod  if yapısının içerisine girecektir.MouseInfo.getPointerInfo() ile mouse’un bilgilerini alıyoruz daha sonra getLocation ile x ve y noktalarına ulaşıyoruz.Robot sınıfımıza bulduğumuz x ve y noktalarını parametre olarak geçirdiğimiz zaman bize o x ve y noktasının Color tipinden bilgilerini dönecektir. color.getRed() diyerek o an mouse’nin bulunduğu noktanın değerlerini alıyoruz.Bu değerler rgb değerleri olduğu için direkt formdaki gerekli text atamalarını yapıyoruz.Şimdi bu rgb değerlerinden bizim cmyk değerlerinede ihtiyacımız var bu dönüşümü yapan method’uda alta yazdım rgbToCmyk parametre olarak r,g,b değerlerini alıyor ve geriye cmyk değerlerini int dizisi olarak döndürüyor.Daha sonra bu dönen değerleri gerekli text’lere atamasını yapıyoruz.Uygulamamızı biraz daha renklendirmek için küçük birde renk çizdirelim formumuza, bunun içinde paint’i kullanıyoruz bu method’u repaint diyerek çağırıyoruz.

 

 

 

 

O an global değişkenlerimize atadığımız r,g,b değerleri doğrultusunda ekrana kare çizdiriyoruz bu çizilen tahmin edeceğiniz gibi mouse’nin o an üzerinde olduğu nokta’nın rengidir.Son olarak formumuz Deactivated olduğu zaman cevrimKontrol değişkenimizi false olarak atamamız lazım

 

 

 

Bu şekilde kullanıcı formun dışında bir noktaya tıkladığı zaman formumuzun windowDeactivated event’i tetikleneceği için burada cevrimKontrol değişkenimizi false olarak düzenliyoruz ki uygulamamız o andan itibaren yeni değerler kutucuklara atama yapmasın.Son olarak ekran görüntümüz

 

 

 

 

 

Kaynak Kodları Buradan İndirebilirsiniz

 

 

 

 

 

posted in Java by gokhan

Follow comments via the RSS Feed | Yorum yapın | Trackback URL

Leave Your Comment

*

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org