Swing’de MVC – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
![Java Dahili Çerçeve Sınıfı – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları](https://billgatesweb.com/wp-content/uploads/2022/08/jaac.jpeg)
Swing’de MVC
Swing aslında MVC tasarımının model-delegate adı verilen basitleştirilmiş bir varyantını kullanır. Bu tasarım, görünümü ve denetleyici nesnesini, bileşeni ekrana çeken ve UI temsilcisi olarak bilinen GUI olaylarını işleyen tek bir öğede birleştirir.
Olay işlemenin çoğu AWT’de halledildiğinden, grafik yeteneklerini ve olay işlemeyi birleştirmek Java’da biraz kolaydır. Tahmin edebileceğiniz gibi, model ile UI temsilcisi arasındaki iletişim, gösterildiği gibi iki yönlü bir yol haline gelir.
Şimdi gözden geçirelim: her Swing bileşeni bir model ve bir UI temsilcisi içerir. Model, bileşenin durumu hakkındaki bilgileri korumaktan sorumludur. UI temsilcisi, bileşenin ekranda nasıl çizileceğine ilişkin bilgileri korumaktan sorumludur. Ek olarak, UI temsilcisi (AWT ile bağlantılı olarak), bileşen aracılığıyla yayılan çeşitli olaylara tepki verir.
MVC tasarımında model ve UI temsilcisinin ayrılmasının son derece avantajlı olduğunu unutmayın. MVC mimarisinin benzersiz bir yönü, birden çok görünümü tek bir modele bağlama yeteneğidir.
Örneğin, aynı verileri bir pasta grafikte ve bir tabloda görüntülemek istiyorsanız, iki bileşenin görünümlerini tek bir veri modeline dayandırabilirsiniz. Bu şekilde, verilerin değiştirilmesi gerekiyorsa, bunu yalnızca tek bir yerde yapabilirsiniz, görünümler buna göre kendilerini günceller.
Aynı şekilde, temsilciyi modelden ayırmak kullanıcıya, herhangi bir verisini etkilemeden bir bileşenin nasıl görüneceğini seçme avantajı sağlar. Hafif tasarımla birlikte bu yaklaşımı kullanarak Swing, her bileşene kendi takılabilir görünüm ve hissini sağlayabilir.
Şimdiye kadar, MVC’nin nasıl çalıştığına dair sağlam bir anlayışa sahip olmalısınız. Ancak, MVC kullanmanın eğlencesini henüz bozmayacağız. En basit uygulamalarda bile MVC’yi kendi avantajınıza nasıl kullanabileceğinize dair daha fazla ayrıntıya girin.
Swing ile Çalışmak
Yeni kitaplıklarla ilgili bazı uyarılardan kısaca bahsetmeden Swing’e girişimiz tamamlanmış sayılmaz. Kısaca bahsetmek için iki alan vardır: çoklu kullanım sorunları ve hafif/ağır sorunlar. Bu sorunların farkında olmak, Swing ile çalışırken bilinçli kararlar vermenize yardımcı olacaktır. Bu zor alanlarda size derinlemesine rehberlik sağlar.
Swing’in ilk sürümünden kısa bir süre önce JavaSoft, geliştiricilerin bileşenlerde model durumlarını değiştirmek için bağımsız iş parçacıkları kullanmamalarını öneren bir makale yayınladı.
Bunun yerine, bir bileşen ekrana boyandığında (veya boyanmak üzereyken), model durumundaki güncellemelerin yalnızca olay gönderme kuyruğundan yapılması gerektiğini öne sürüyorlar. Olay gönderme kuyruğu, olayları diğer bileşenlere iletmek için kullanılan bir sistem iş parçacığıdır. Bileşenleri yeniden boyamak için olanlar da dahil olmak üzere GUI olaylarının gönderilmesini yönetir.
Buradaki sorun, MVC mimarisinin bir eseridir ve performans ve potansiyel yarış koşulları ile ilgilidir. Yukarıda da belirttiğimiz gibi bir Swing bileşeni, modelindeki durum değerlerine göre kendisini çizer.
Ancak, bileşen yeniden boyama sürecindeyken durum değerleri değişirse, bileşen hatalı bir şekilde yeniden boyanabilir, bu kabul edilemez. Sorunları birleştirmek için, modelin tamamına ve ayrıca bazı kritik bileşen verilerine bir kilit yerleştirmek ve hatta söz konusu verileri klonlamak, her yenileme için performansı ciddi şekilde engelleyebilir.
Bu nedenle, uygulanabilir tek çözüm, durum değişikliklerini yenilemelerle seri hale getirmektir. Bu, bileşen durumundaki değişikliklerin, Swing’in herhangi bir bileşeni yeniden boyadığı sırada meydana gelmemesini ve hiçbir yarış koşulunun oluşmamasını sağlar.
mvc java swing example
java swing mvc
java-swing mvc example github
swing architecture
mvc gui
Java swing mvc example
java swing controller
java se application design with mvc
Hafif ve Ağır Bileşenler
Hafif/ağır bileşen tartışmasından çıkan en sık sorunlardan biri, öğelerin ekranda nasıl istiflendiğine ilişkin iyi tanımlanmış bir yöntem olan derinlik veya z-düzeni fikridir. Z sırası nedeniyle, Swing’de hafif ve ağır bileşenlerin karıştırılması önerilmez. Nedenini görmek için, ağır bileşenlerin işletim sistemi düzeyinde kullanılan eş nesnelere bağlı olduğunu unutmayın.
Ancak, Swing ile yalnızca en üst düzey bileşenler ağırdır: JApplet, JFrame, JDialog ve JWindow. Ayrıca, ağır bileşenlerin her zaman “opak” olduğunu, dikdörtgen bir şekle sahip olduklarını ve şeffaf olmadıklarını unutmayın. Bunun nedeni, ana bilgisayar işletim sisteminin tipik olarak tüm boyama bölgesini bileşene tahsis etmesi ve önce onu temizlemesidir.
Kalan bileşenler hafiftir. İkilemin can alıcı noktası şu: Hafif bir bileşen ağır bir konteynerin içine yerleştirildiğinde, ağır bileşenin grafik içeriğini paylaşır (ve aslında ödünç alır).
Hafif bileşen kendisini her zaman onu içeren ağır bileşenle aynı düzlemde çizmelidir, dolayısıyla bileşenle aynı z sırasını paylaşmalıdır. Ek olarak, hafif bileşenler, bunları içeren üst düzey pencerenin veya iletişim kutusunun kırpma bölgesine bağlanır.
Aslında, hafif bileşenlerin tümü, ağır bir bileşenin tuvali üzerindeki “çizimlerdir”. Çizimler tuvalin sınırlarını aşamaz, her zaman başka bir tuvalle kaplanabilir. Bununla birlikte, ağır bileşenler bu kısıtlamadan muaftır. Bu nedenle, amaç bu olsun ya da olmasın, her zaman hafif bileşenlerin üzerinde görünürler.
Ağır bileşenlerin Swing’de başka sonuçları da vardır. Ağır bileşenler, kırpma sınırlarının ötesine geçebilecekleri kaydırma bölmelerinde iyi çalışmaz; hafif menülerin ve menü çubuklarının önünde (belirli önlemler alınmadıkça) veya dahili çerçevelerin içinde çalışmazlar.
Ancak bazı Swing sınıfları bu soruna ilginç bir yaklaşım sunar. Bu sınıflar, bileşenin kendisini hafif veya ağır bir pencere kullanarak mı çizeceğini belirtmenize olanak tanır. Bu nedenle, biraz mantıklı programlama ile, nerede bulunurlarsa bulunsunlar, bileşenlerinizin doğru şekilde oluşturulmasını sağlayabilirsiniz.
Swing’in sunduğu tüm bileşenleri görmek için aceleniz varsa, bağımsız Swing dağıtımıyla sağlanan Swing Set gösterimini mutlaka inceleyin. Demonun kurulumu son derece kolaydır. JDK 1.1 kullandığınızı varsayarsak, Swing sınıflarını bilgisayarınıza indirip ayıkladıktan sonra aşağıdakilere ihtiyacınız olacak:
1. CLASSPATH ortam değişkeninizi, dağıtımın temel dizininde bulunan swingall.jar dosyasını içerecek şekilde düzenleyin. Ayrıca SWING_HOME ortam değişkenini temel dizini işaret edecek şekilde ayarlayın.
2. Dizini, Swing dağıtımında örnekler/SwingSet dizinine değiştirin.
3. Platformunuza bağlı olarak runnit komut dosyasını veya runnit.bat dosyasını çalıştırın.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)