Nesneleri bağlama

Başlatan Chantre, 27 Ekim 2010 - 09:54:19

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Chantre

Başlık tam olarak olmamış olabilir, kusura bakmayın.

Benim üzerinde uğraştığım bir proje var ve sıklıkla şöyle bir şeye ihtiyaç duyuyorum:
Mesela bi panelin(şeklin) rengi program içindeki bi değer değiştiğinde değişsin istiyorum. Ne bileyim başka bi nesnenin boyu başka bi değere göre değişsin falan.

Tam olarak adlandıramadığım için olsa gerek, döküman bulamadım. Bu gibi şeyleri nasıl yapıyoruz acaba?

Teşekkürler

Not: NetBeans kullanıyorum.
When you play the game of thrones, you win or you die!

krwlng

Etkileşimli nesne oluşumu (Interactive Object Creation) konusunu araştırabilirsiniz. Ayrıca java da if, else, while kullanımlarını biliyorsanız veya öğrenirseniz düşündüğünüz şeyi dolaylı olarak yapabilirsiniz diye düşünüyorum. Çok fazla bilgim olmadığı için ancak bu şekilde yardımcı olabiliyorum.
http://twitter.com/yusuFBrn

Ali İsmail Korkmaz, FENERBAHÇE Yıkılmaz!

cagliari

Java'nın kendi sitesindeki dökümantasyonu oldukça güzel ve yeterlidir. Kullandığın nesnelerin metotlarını inceleyebilirsin. Aklına gelebilecek her özellik üzerinde oynayabilmen için gerekli metotları bulabileceksindir. Örnek verdiğin panel rengini değiştirmek için sanırım setBackground() gibi bir metot vardı, emin değilim.

Kullanıcının gerçekleştireceği belli bir 'event'ın bu değişiklikleri yapmasını istiyorsan da... Gene kullandığın nesneye göre ilgili EventListener ve EventHandler classlarını araştırabilirsin. Yapmak istediğin şeyi aslında tam anlamadım. Ama eğer bu dediklerimin kullanımını biliyorsan bence kolayca üstesinden gelebilirsin.

Örneğin JPanel için şu dökümanlardan araştırmaya başlayabilirsin:

http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/JPanel.html

krwlng

Java için bu konularda pek bilgim yok fakat sanırım arkadaşın istediği şeyin Basic karşılığına örnek şöyle birşey,

Private Sub TrackBar1_Scroll_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
AxMediaPlayer1.settings.volume = TrackBar1.Value
End Sub
burada trackbar değeri değiştikçe oynatıcının ses değeri değişiyor, yanlış anlamadıysam Chantre böyle birşeyin java olarak karşılığını istiyor. Benim örneğimde trackbar sesi kontrol ediyordu Chantre'nin örneğinde bir text kutusuna yazı girildiği zaman butonlardan birinin rengi değişsin veya benzeri bir istek sanırım. Doğru anlamışmıyım?
http://twitter.com/yusuFBrn

Ali İsmail Korkmaz, FENERBAHÇE Yıkılmaz!

Chantre

Evet onun gibi. Yani mesela integer bi değişkenim olsun. o 1 değeri alınca 10 tane panelin rengi kırmızı olsun, 2 alınca yeşil olsun. bi tane boolean değişkenim olsun, true iken bi textfiled "çalışıyor" yazsın, false iken "çalışmıyor" yazsın gibi.

setBackround methoduyla değiştirebileceğimi biliyorum da, işte yukarıda anlattığım olayı nasıl yapacağımı bilmiyorum.

EventHandler EventListener'ı pek bilmiyorum bi onları kurcalayım.
When you play the game of thrones, you win or you die!

cagliari

Şu iki linkin içeriği de faydalı olabilir

http://download.oracle.com/javase/tutorial/uiswing/events/intro.html

http://download.oracle.com/javase/tutorial/uiswing/components/colorchooser.html

Örnek programları çalıştırmak için Launch tuşuna tıklayıp Aç diyebilirsin, veya kaydedip java web start ile birlikte aç diyebilirsin. Özellikle ikinci linkteki Demo2, ilgini çekebilir. Choose background color tuşuna tıklayıp açılan palet yardımıyla üst taraftaki panelin veya label'in arka plan rengi dğeiştirilebiliyor. Kendi amacına göre uyarlamanda faydası dokunabilir.

Chantre

Teşekkürler fakat ikisi de istediğim işi yapmıyor. Yani ikisinde de bi ActionEvent ve ActionListener var. Bi butona ya da başka bir yere basıldığında bi panelin rengini değiştirebiliyorum. Benim istediğim herhangi bir şekilde bir int ya da bi boolean (ya da her neyse) değiştiğinde, bazı şeylerin bu değişime bağlı olarak değişmesi.
When you play the game of thrones, you win or you die!

cagliari

#7
Şimdi ne istediğini anladım :). Şöyle bir şey deneyebilirsin. Söz konusu değişkenin değişeceği her noktada panel'ini tekrar boyayabilirsin. Bunun için de repaint() metodu vardı. Bu şekilde olmaz mı. Diğer komponentleri de yenilemek için uygun metotlar var. Label'larda da dinamik olarak değişiklikler yapabiliyorsun. Örneğin program üzerinde fare işaretçisinin bulunduğu kordinatları label üzerinde yazdırmak gibi.

Ekleme: İkinci bir mesaj yazmadan buradan ekleme yapayım; Bu istediğini elle yapmak haricinde bir seçeneğin olduğunu sanmıyorum. "Attiribute"deki her dğeişikliğin olabileceği noktalarda componentteki düzenlemeyi yapacak metodları kod içinde kendin elle çağırmak zorundasın bence. Bunun için Java'nın sunduğu araçlar olduğunu sanmıyorum. Ama eğer varsa, bunun için ilgili attiribute'nin tipine göre Integer,  Boolean vs. .. classlarının kendi metotlarına veya bunların türediği classların metotlarına bakman gerekiyor. Değerlerindeki değişimle birlikte çağrılabilen abstract metodlar olabilir, onları overwrite yaparak kullanabilirsin. Fakat dediğim gibi ben böyle * bir şey olduğunu sanmıyorum.

Not: Yabancı sözcükler için özür dilerim. Sadece anlaşılabilir olmak için Java2nın kendi terminolojisini kullanmaya çalıştım. Türkçeleşitrince neleri kastettiğimin anlaşılması zorlaşabilir.