Çoklu JFrame Kullanımı: İyi mi Kötü Uygulama mı? [kapalı]


531

Görüntüleri görüntüleyen ve bir veritabanından sesler çalan bir uygulama geliştiriyorum. GUI veritabanına görüntü eklemek için ayrı bir JFrame kullanıp kullanmayacağınıza karar vermeye çalışıyorum.

Sadece birden fazla JFrame penceresi kullanmanın iyi bir uygulama olup olmadığını merak ediyorum?


11
Yalnızca çoklu monitör kurulumunu hedefliyorsanız!
DNA

17
Ayrıca, bu dil-agnostik olduğunu ve özellikle Java daha kullanıcı arayüzü ile ilgili olduğunu iddia ediyorum .
wchargin

6
@WChargin'e katılıyorum Bu soru düşündüğümden daha değerli hale geldi!
Peddler

1
Yeni başlayanların (benim gibi) genellikle birden fazla JFrame kullandığını fark ettim. Muhtemelen ana JFrame içinden aramak CardLayout'u kullanmaktan daha kolaydır. Bazı durumlarda kullanımı tavsiye edilmese de.
Hoodlum

Hata ayıklama kaktüs yemek gibi olurdu .. bu tavsiye edilmez.
Taslim Oseni

Yanıtlar:


447

Sadece birden fazla JFrame kullanmanın iyi bir uygulama olup olmadığını merak ediyorum.

Kötü (kötü, kötü) uygulama.

  • Kullanıcı dostu değil: Kullanıcı yalnızca birini görmeyi beklerken görev çubuğunda birden çok simge görür. Ayrıca kodlama problemlerinin yan etkileri ..
  • Kodlamak ve sürdürmek için bir kabus:
    • Bir kalıcı iletişim bu iletişim kutusunun içeriği teklifler odak dikkatine kolay fırsat - seçmek / düzeltme / Bu iptal, sonra devam edin. Birden çok çerçeve yoktur.
    • Üst öğe tıklatıldığında bir üst öğe içeren bir iletişim kutusu (veya kayan araç çubuğu) öne çıkacaktır; istenen davranış buysa bunu çerçevelere uygulamanız gerekir.

Bir GUI'de birçok öğeyi görüntülemenin çeşitli yolları vardır, örneğin:

  • CardLayout(kısa demo. ). Şunun için iyi:
    1. Sihirbaz gibi iletişim kutuları gösteriliyor.
    2. İlişkili bir bileşeni olan öğeler için liste, ağaç vb. Seçimlerin görüntülenmesi.
    3. Bileşen yok ve görünür bileşen arasında çevirme.
  • JInternalFrame/JDesktopPane tipik olarak bir MDI için kullanılır .
  • JTabbedPane bileşen grupları için.
  • JSplitPane Biri veya diğeri (boyut) arasındaki önemi kullanıcının ne yaptığına göre değişen iki bileşeni görüntülemenin bir yolu.
  • JLayeredPane çok iyi .. katmanlı bileşenler.
  • JToolBargenellikle eylem veya denetim grupları içerir. GUI etrafında sürüklenebilir veya tamamen kullanıcı ihtiyacına göre kapalı olabilir. Yukarıda belirtildiği gibi, bunu yapan ebeveyne göre en aza indirir / geri yükler.
  • Bir öğe olarak JList(aşağıdaki basit örnek).
  • Düğüm olarak a JTree.
  • İç içe düzenler .

Ancak bu stratejiler belirli bir kullanım durumunda işe yaramazsa aşağıdakileri deneyin. Diyalogların üst öğesi olarak çerçeveyi kullanarak, serbest kayan öğelerin geri kalanı için tek bir ana JFrame, daha sonra sahip JDialogveya JOptionPaneörnekler görün.

Birçok resim

Birden çok öğenin görüntü olduğu bu durumda, aşağıdakilerden birini kullanmak daha iyi olur:

  1. JLabelKullanıcının o anda ilgilendiği resmi görüntülemek için tek bir (kaydırma bölmesinde ortalanmış). Görüldüğü gibi ImageViewer.
  2. Tek bir satır JList. Bu cevapta görüldüğü gibi . Bunun 'tek sıralı' kısmı sadece hepsi aynı boyutlardaysa çalışır. Alternatif olarak, görüntüleri anında ölçeklendirmeye hazırsanız ve bunların hepsi aynı en boy oranıysa (örneğin 4: 3 veya 16: 9).


4
@AndrewThompson Daha JFrameönce birden fazla s'ye ihtiyaç duyduğum ve bu sorunları hiç düşünmediğim bir durumla hiç karşılaşmamıştım, açıkladığınız için teşekkürler!
Jeffrey

4
@ user417896 "Sadece değişir." Hayır değil. Gimp kullandım. Korkunç ve MDI olmalı.
Andrew Thompson

4
@ryvantage "(Excel) MDI olmalı mı?" İyi soru. Kullanıcıya her iki şekilde de sunulması gerektiğini hissediyorum (kesinlikle sadece MDI formunda değil). Örneğin: 1) Şu anda TextPad kullanıyorum ve seçimime göre, her biri bir listede gösterilen birden fazla belge sunan ayrı örnekler açar. 2) Genellikle sekmeli modda FF kullansam da, bazen bir sekmeyi yeni bir pencereye sürüklerim. - Örneklerdeki ortak faktör kullanıcı seçimidir. Uygulamayı sunun. 'Ancak kullanıcı bunu ister'.
Andrew Thompson

12
@AndrewThompson Son yorumunuzla kendi argümanınıza karşı çıktınız. Ana cevabınızda bunun kötü bir uygulama olduğunu ve asla yapılmaması gerektiğini söylüyorsunuz, ancak yukarıdaki yorumunuzda bazen SDI'dan hoşlandığınızı söylüyorsunuz ve kullanıcılarımıza seçenek sunmalıyız. Şüphesiz, bu user417896'nın yukarıda söylediği şeydir. Değişir. Bu, geliştiricilerimle ilgili en büyük evcil hayvan nefretlerimden biri. Birçoğunun sözde 'en iyi uygulamalar' konusunda dini bir fanatik olmaları. Hepimiz 'en iyi uygulamalara' yapışıp meydanın dışında düşünmesek, bugün sahip olduğumuz yenilikçi kullanıcı arayüzlerine sahip olmazdık.
DuncanKinnear15

4
Büyük genelleme! Kullanıcının pencerelerini ayrı ayrı kontrol etmesine ve görev çubuğundan ayrı ayrı erişmesine DAİMA kötü değildir. İyi uygulama tüm seçeneklerin farkında olmak ve akıllıca bir seçim yapmaktır. Birden fazla JFrame'in iyi bir mantıklı olduğu durumlar kesinlikle vardır.
Dawood ibn Kareem

203

Çoklu JFrameyaklaşım, Swing uygulamalarını programlamaya başladığımdan beri uyguladığım bir şeydi. Çoğunlukla, başlangıçta yaptım çünkü daha iyisini bilmiyordum. Ancak , bir geliştirici olarak deneyimim ve bilgimde olgunlaştığım ve çok daha deneyimli Java geliştiricilerinin görüşlerini okumaya ve almaya başladığımda , çok sayıda yaklaşımdan (hem mevcut projelerde hem de gelecekteki projelerde) kaymaya çalıştım. JFrame) sadece benim ... müşterilerimden bu dirençle karşılaşacaksınız! JInternalFrameAyrı bileşenler için "alt" pencereleri ve pencereleri denetlemek için kalıcı iletişim kutuları uygulamaya başladığımda , müşterilerim şikayet etmeye başladı!En iyi uygulama olduğunu düşündüğüm şeyi yaptığım için oldukça şaşırdım! Ama dedikleri gibi, "Mutlu bir eş mutlu bir hayattır." Aynı şey müşterileriniz için de geçerli. Tabii ki, ben bir yükleniciyim, bu yüzden son kullanıcılarım, ortak bir senaryo değil, geliştirici bana doğrudan erişim var.

Bu yüzden, çoklu JFrameyaklaşımın faydalarını ve mit-büstünün, diğerlerinin sunduğu bazı eksilerini açıklayacağım.

  1. Düzende nihai esneklik - Ayrı ayrı özelliklere izin vererek JFrame, son kullanıcınıza ekranındaki içeriği yayma ve kontrol etme yeteneği verirsiniz. Konsept "açık" ve daraltıcı değildir. Bir büyük JFrameve bir sürü JInternalFrames'ye gittiğinizde bunu kaybedersiniz .
  2. Çok modülerleştirilmiş uygulamalar için iyi çalışır - Benim durumumda, çoğu uygulamada birbirleriyle hiçbir ilgisi olmayan 3-5 büyük "modül" var. Örneğin, bir modül bir satış kontrol paneli ve bir modül bir muhasebe kontrol paneli olabilir. Birbirleriyle ya da hiçbir şeyle konuşmuyorlar. Ancak, yönetici her ikisini de açmak isteyebilir ve görev çubuğunda ayrı çerçeveler olması hayatını kolaylaştırır.
  3. Son kullanıcıların dış materyale referans vermesini kolaylaştırır - Bir keresinde, bu durum vardı: Uygulamamın "Yeni Ekle" yi tıklayabileceğiniz bir "veri görüntüleyicisi" vardı ve bir veri giriş ekranı açacaktı. Başlangıçta her ikisi de JFrames. Ancak, veri giriş ekranının JDialog, üst öğesi veri görüntüleyici olan bir ekran olmasını istedim . Ben değişiklik yaptık ve hemen o küçültmek veya kapatmak gerçeğinden ağır dayanıyordu bir son kullanıcıdan bir çağrı aldı görüntüleyici ve tutmak editörü o programın başka bir bölümüne (veya bir web sitesi, ben don başvurulan ederken açık hatırlamıyorum). O, değil o ilk ve olmaya giriş iletişim ihtiyacı vardı, bu yüzden bir çok monitörde başka bir şeyikinci olarak, veri görüntüleyici tamamen gizli. Bu bir ile imkansızdı JDialogve kesinlikle bir ile imkansız olurdu JInternalFrame. Dürüstçe onu JFramesakıl sağlığı için ayrı olarak değiştirdim , ama bana önemli bir ders verdi.
  4. Efsane: Kodlaması zor - Bu benim tecrübelerim için geçerli değil. Bir oluşturmak için herhangi bir kolay olurdu neden görmüyorum JInternalFramebir daha JFrame. Aslında, tecrübelerime göre, JInternalFramesçok daha az esneklik sunuyor. JFrameUygulamalarımda gerçekten iyi çalışan s açılış ve kapanışlarını ele almak için sistematik bir yol geliştirdim . Çerçeveyi neredeyse tamamen çerçevenin kodunun içinden kontrol ediyorum; Yeni çerçevenin oluşturulması, SwingWorkerkullanıcı çalışır benim açmalısınız vb iki kez All açmak için eğer ön çerçeveyi getiren / geri, o kumandayı arka plan iş parçacığı ve EDT üzerinde GUI koduna veri alma s JFrames edilir genel statik yöntemi open()ve açık yöntemi birwindowClosing() olay geri kalanı ele alır (çerçeve zaten açık mı? açık değil, yükleniyor mu? vb.) Bu yaklaşımı bir şablon yaptım, böylece her kare için uygulanması zor değil.
  5. Efsane / Kanıtlanmamış: Kaynak Ağır - Bu spekülatif ifadenin arkasında bazı gerçekleri görmek istiyorum. Belki de, JFramea'dan daha fazla alana ihtiyaç duyabiliyor JInternalFrameolsanız da JFrame, 100 s açsanız bile , gerçekten kaç tane daha kaynak tüketirsiniz? Endişeniz kaynaklar yüzünden bellek sızıntısıysa: çağırmak dispose(), çöp toplama için çerçeve tarafından kullanılan tüm kaynakları serbest bırakır (ve yine diyorum ki, a JInternalFrameaynı endişeyi çağırmalıdır).

Çok yazdım ve daha fazla yazabileceğimi hissediyorum. Her neyse, umarım aşağı oy vermezim çünkü bu popüler olmayan bir görüştür. Soru açıkça değerli bir soru ve umarım ortak görüş olmasa bile değerli bir cevap verdim.

Tek kare / kare başına birden çok belge ( MDI ) ve birden çok kare / kare başına tek belge ( SDI ) için mükemmel bir örnek Microsoft Excel'dir. MDI'nın bazı avantajları:

  • dikdörtgen olmayan bir şekilde birkaç pencereye sahip olmak mümkündür - böylece masaüstünü veya başka bir pencereyi başka bir işlemden gizlemezler (örn. web tarayıcısı)
  • ikinci Excel penceresinde yazarken başka bir işlemden bir pencereyi bir Excel penceresi üzerinde açmak mümkündür - MDI ile, dahili pencerelerden birinde yazmaya çalışmak tüm Excel penceresine odaklanacaktır, böylece pencereyi başka bir işlemden gizleyecektir
  • farklı ekranlarda farklı belgelere sahip olmak mümkündür, bu da özellikle ekranlar aynı çözünürlüğe sahip olmadığında yararlıdır

SDI (Tek Belge Arabirimi, yani her pencerede yalnızca tek bir belge olabilir):

resim açıklamasını buraya girin

MDI (Çok Belgeli Arayüz, yani her pencerede birden çok belge olabilir):

resim açıklamasını buraya girin


16
İyi düşünülmüş. Birbirinizle ilgisi olmayan birden fazla modülünüz varsa, neden ayrı uygulamalar oluşturmuyorsunuz? Ayrıca, kalıcı iletişim kutuları kullanmanız gerektiğini söyleyen bir kısıtlama yoktur , ikinci bir "çerçeve" olarak hizmet etmek için modelsiz iletişim kutuları kullanabilirsiniz.
Jeffrey

Bu konuda @kleopatra ile anlaşmak zorunda olsa da çok iyi cevap ve ayrıntılı cevap .. Bir keresinde, kullanıcıların birden fazla ekran / aynı ekrandan çıkış verilerini farklı girişlerle karşılaştırmak istedikleri yüzlerce ekranlı bir uygulamam vardı. Bunu yapmamıza izin vermek için özel bir pencere sistemi oluşturduk. Kullanıcılar sadece yan yana tutmak için 2 JFrames sahip olmak daha rahat;)
javatarz

Argümanınızı anlasam da, yine de her şeyin bir JFrameve büyük bir ebeveyne sahip olmasını tercih ederim JTabbedPane; ancak yerleşimin farklı olabileceği ikinci bir pencere (veya daha fazla) açma imkanı ile SDI severlerin mutlu olduğu ve MDI olanların da olduğu hibrit bir davranış sunuyor. Her durumda, her zaman JInternalFramesize her iki dünyanın tüm rahatsızlıklarını veren korkunç bir model olarak düşündüm . Sundukları esneklik sadece berbat ve gerçek bir amaç için çok değerli ekran alanlarını yiyorlar.
Guillaume Polet

SDI'nın bazen uygun olduğunu kabul ediyorum (ve kullanıcılar genellikle tercih ediyor). Bir dezavantaj daha var ve şu ana kadar herhangi bir çözüm bulamadım, talihsiz: her birinin JFramekendi görev çubuğu simgesi var. Bazen bu tam olarak istediğiniz şeydir, ama bazen değildir. WinAPI'de bu yapılandırılması kolaydır, ancak Swing'de yapılamaz.
Suma

@suma bu durumda bence bir JDialogfazla tercih ediyorum JFrame.
ryvantage

51

Daha yeni katıldığım bir örnekle "kullanıcı dostu değil" argümanına karşı çıkmak istiyorum.

Bizim uygulamada, kullanıcıların çeşitli sekmeleri ayrı sekmeler olarak çalıştırdığı bir ana penceremiz var. Uygulamamızı mümkün olduğunca bu tek pencerede tutmaya çalıştık.

Çalıştırdıkları 'programlardan' biri, sistem tarafından oluşturulan raporların bir listesini sunar ve kullanıcı bir rapor görüntüleyici iletişim kutusu açmak için her satırdaki bir simgeyi tıklayabilir. Bu görüntüleyici, raporun dikey / yatay A4 sayfalarının eşdeğerlerini gösteriyor, bu nedenle kullanıcılar bu pencereyi oldukça büyük, neredeyse ekranlarını dolduruyor.

Birkaç ay önce, müşterilerimizden bu rapor görüntüleyici pencerelerini modelleme yapma isteklerini almaya başladık, böylece aynı anda birden fazla rapor açabilsinler.

Bunun iyi bir çözüm olduğunu düşünmediğim için bir süre bu talebe karşı koydum. Ancak, kullanıcıların sistemimizin bu 'eksikliğinden' nasıl geçtiğini öğrendiğimde fikrim değişti.

Raporu belirli bir dizine PDF olarak kaydetmek için 'Farklı Kaydet' özelliğini kullanarak, PDF dosyasını açmak için Acrobat Reader'ı kullanarak bir görüntüleyici açıyorlardı ve bir sonraki raporda da aynısını yapacaklardı. Bakmak istedikleri çeşitli rapor çıktılarıyla çalışan birden fazla Acrobat Okuyucuya sahip olacaklardı.

Böylece izleyiciyi modelsiz bıraktım. Bu, her görüntüleyicide bir görev çubuğu simgesi olduğu anlamına gelir.

En son sürüm geçen hafta piyasaya sürüldüğünde, onlardan gelen ezici tepki, onu SEVMEKTİR. Sistemdeki en popüler geliştirmelerimizden biri oldu.

Böylece devam edip kullanıcılarınıza istediklerinin kötü olduğunu söylersiniz, ancak sonuçta size hiçbir iyilik yapmaz.

BAZI NOTLAR:

  • JDialog'ları bu modelsiz pencereler için kullanmak en iyi uygulama gibi görünüyor
  • ModalityTypeBoole modalargümanından ziyade new öğesini kullanan yapıcıları kullanın . Bu iletişim kutularına görev çubuğu simgesi veren şey budur.
  • Modelsiz iletişim kutuları için yapıcıya boş bir üst öğe iletin, ancak bunları üst öğe pencerelerine göre bulun.
  • Windows'ta Java 6 sürümünde bir hata var; bu, ana pencerenizin siz söylemeden 'her zaman üstte' olabileceği anlamına gelir. Bunu düzeltmek için sürüm 7'ye yükseltin

6
Bu da benim deneyimim. Emin olduğum bir şey varsa, insanlar gerçekten yapmak istedikleri her şeyi yapmak için kullanıcı dostluğunuzu atlatmaya çalıştıklarında yanlış bir şeyler yapıyorsunuzdur. İşlevsellik kraldır.
ryvantage

Bunun üstesinden gelmenin bir yolu, hepsi aynı işlevselliği sunan birden fazla JFrame'in açılmasına izin vermektir, ancak varsayılan olarak her şey tek bir pencerede yapılır. Bu aslında kullanıcının SDI veya MDI arasında seçim yapmasına izin verir.
Guillaume Polet

Afedersiniz? Çözümünüzü biraz daha iyi açıklayabilir misiniz, lütfen? Nasıl tek bir pencere VE birden çok pencere olabilir? Ana uygulamanın çalıştığı bir ana penceremiz var, ancak bazen iletişim kutularını açmamız gerekir ve bazen bu iletişim kutularının (kullanıcı gereksinimlerine göre) modelsiz olması gerekir. Arayüzün bu şekilde olması ya da sadece kendiniz için büyük bir delik açması için kurallar koymak.
DuncanKinn

1
@GuillaumePolet Duncan ile hemfikirim, ne demek istediğini biraz daha açıklayabilir misin? Karışıklıklarını paylaşıyorum
Ungeheuer

Ne demek o kullanıcı uygulamanın ('JFrame') birden fazla kopyasını başlayabilirsiniz ama bunların her birinde SDI olduğunu düşünüyorum. Ancak, istemci uygulamamız çok kalın bir istemcidir, bu yüzden bu, kaynağa aç bir yaklaşım olacaktır.
DuncanKinnear17

20

Ana çerçeveye bir jInternalFrame yapın ve görünmez yapın. Daha sonra başka etkinlikler için kullanabilirsiniz.

jInternalFrame.setSize(300,150);
jInternalFrame.setVisible(true);

19

Salıncağa son kez dokunduğumdan beri bir süredir ama genel olarak bunu yapmak kötü bir uygulamadır. Akla gelen ana dezavantajlardan bazıları:

  • Daha pahalı: Dialog veya JInternalFrame gibi bir pencere konteyneri gibi bir JFrame çizmek için daha fazla kaynak ayırmanız gerekecek.

  • Kullanıcı dostu değil: Birbirine yapışmış bir grup JFrame'e gitmek kolay değildir, uygulamanız tutarsız ve kötü tasarımlı bir dizi uygulama gibi görünecektir.

  • JInternalFrame'i kullanmak çok kolay Bu tür bir retoriktir, şimdi Masaüstü ve JInternalFrame modelinden düşündüğümüzden daha akıllı (veya daha fazla boş zaman) olan diğer insanlar çok daha kolay ve bu yüzden kullanmanızı tavsiye ederim.


7
Birden fazla kullanıcı kullanırken de kullanıcı için aynı etkiye sahip değil misiniz JInternalFrame? Şahsen, JInternalFrame's kullanımı ile itiraz ediyorum ! CardLayoutgerçek bir kutsama!
Branislav Lazic

4
@ Brano88 ile hemfikirim. JInternalFrameBahsettiğiniz üç olgunun hiçbirinde teklifler hiçbir avantaj (1. nerede kanıt JInternalFramedaha hafif JFrame? 2. JInternalFrameler gibi bir demet olarak / dağınık / sıkışmış buluşmanızı darmadağın olabilir JFrames. 3. Nasıl JInternalFramekolay? O var bir tanesi a JDesktopPaneve diğeri doğal ekran alanı içinde yer
alırsa

1
1. JFrame hafif bir bileşen olan JInternalFrame ile karşılaştırılan bir ağır ağırlık bileşenidir. 2. Hiç işlevsel olması için aynı anda tonlarca pencere içeren bir uygulama gördünüz mü? IDE, Tarayıcılar, finans uygulamasında bile aynı kapsamda tutmayı hedeflemektedir. 3. JIF'in geçmişte kullanımı çok kolay olduğunu gördüm ve elbette bir senaryoya en uygun bileşeni
seçmedim

4
1. Bunun kanıtını görmek istiyorum. Her ikisi de nesnedir, her ikisi de JComponents'dir, her ikisi de hemen hemen aynı yapılara sahiptir, ancak biri a üzerinde oluşturulur JDesktopve diğeri değildir. Yine, üzgünüm, ama inanıyorum ki "ağırlığı" ile ilgili spekülasyon JFrame. 2. Uygulamalarım SDI kullanıyor ve müşterilerim çok mutlu. Ancak, tabii ki, bu berbat bir ton "pencere" dediniz. Ama benim açımdan şu: "bir ton" JInternalFramekadar kötü berbat olur! JIF'lerin özensiz bir UI tasarımcısı olmanıza izin verdiğini söylüyorsanız, bu korkunç. Karmaşık bir karmaşa, JF veya JIF olsun, karmaşalı bir karmaşa.
ryvantage

2
"tabii ki bir senaryoya en uygun bileşeni seçin"
Necronet

10

Kesinlikle kötü uygulama. Bunun bir nedeni, her birinin JFrameyeni bir görev çubuğu simgesi göstermesi nedeniyle çok 'kullanıcı dostu' olmamasıdır . Birden fazla JFrames kontrol etmek saçınızı yırtacak.

Şahsen ben JFramesenin tür başvuru için ONE kullanırdım . Birden çok şeyi görüntüleme yöntemleri size kalmış, çok şey var. Canvases, JInternalFrame, CardLayout, hatta JPanelbelki bu.

Birden çok JFrame nesnesi = Ağrı, sorun ve problemler.


9
hmm ... kabul edilen cevaba kıyasla yeni bir şey yok, afaics?
Kleopatra

5
"Her JFrame yeni bir görev çubuğu simgesi gösterir" - bu sadece Windows için geçerlidir! Mac OS X'te, kaç pencerenin açık olduğuna bakılmaksızın her uygulamada yalnızca bir dock simgesi bulunur ve uygulamaların birden fazla üst düzey pencereye sahip olması yaygındır.
Rolf

8

Bence birden fazla Jframes kullanmak iyi bir fikir değil.

Bunun yerine kullanabilirsiniz JPanelbirinden daha fazlası veya daha fazla JPanelaynı yer JFrame.

Ayrıca bu JPanels arasında geçiş yapabiliriz . Bu yüzden bize, bir şeyden daha fazlasını gösterme özgürlüğü veriyor JFrame.

Her biri için JPanelfarklı şeyler tasarlayabiliriz ve bunların hepsi JPanelteker JFrameteker gösterilebilir .

Bunlar arasında geçiş yapmak için her biri veya 'JButton JPanel` ile birlikte JPanelkullanın .JMenuBarJMenuItemsJPanelfor each

Birden fazla JFrameiyi bir uygulama değildir, ancak birden fazla istersek yanlış bir şey yoktur JFrame.

Ama JFramebirden fazla JFrames yerine farklı ihtiyaçlarımız için birini değiştirmek daha iyidir .


5

Çerçeveler aynı boyutta olacaksa, neden çerçeveyi oluşturmuyorsunuz ve çerçeveyi referans olarak geçmiyorsunuz.

Çerçeveyi geçtikten sonra nasıl yerleştireceğinize karar verebilirsiniz. Bir dizi rakamın ortalamasını hesaplamak için bir yönteme sahip olmak gibi bir şey olurdu. Yöntemi tekrar tekrar yaratır mısınız?


1
Bu temelde Cardlayout ve JTabbedPane'in yapabileceklerini yapıyor, ancak tersini yapıyor ve aynı şeyi elde etmek için temiz ve kolay bir çözümünüz varken kodunuzu aşırı derecede karmaşık hale getiriyor.
Guillaume Polet

4

İyi bir uygulama değildir, ancak kullanmak isteseniz bile singleton desenini iyi olarak kullanabilirsiniz. Projemin çoğunda singleton kalıplarını iyi kullandım.


3
Singleton deseni bir kabus. Ölçeklendirmek isteyen herhangi bir proje ne pahasına olursa olsun tekil kalıptan kaçınmaya çalışmalıdır.
Guillaume Polet
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.