Penggunaan Banyak JFrames: Praktik Baik atau Buruk? [Tutup]

531

Saya mengembangkan aplikasi yang menampilkan gambar, dan memutar suara dari database. Saya mencoba memutuskan apakah akan menggunakan JFrame terpisah atau tidak untuk menambahkan gambar ke database dari GUI.

Saya hanya ingin tahu apakah itu praktik yang baik untuk menggunakan beberapa jendela JFrame?

Penjaja
sumber
11
Hanya jika Anda menargetkan pengaturan multi-monitor!
DNA
17
Saya juga berpendapat bahwa ini adalah agnostik bahasa dan ada hubungannya dengan antarmuka pengguna lebih dari Jawa secara khusus.
wchargin
6
Saya setuju dengan itu @WChargin Pertanyaan ini telah menjadi lebih berharga daripada yang pernah saya pikirkan!
Peddler
1
Saya perhatikan bahwa pemula (seperti saya) biasanya menggunakan beberapa JFrames. Mungkin karena lebih mudah untuk menyebutnya dari dalam JFrame utama daripada memanfaatkan katakanlah CardLayout. Meskipun dalam beberapa kasus tidak disarankan untuk menggunakannya.
Penjahat
Debugging akan seperti makan kaktus .. ini tidak dianjurkan.
Taslim Oseni

Jawaban:

447

Saya hanya ingin tahu apakah itu praktik yang baik untuk menggunakan beberapa JFrames?

Praktek yang buruk (buruk, buruk).

  • Pengguna tidak ramah: Pengguna melihat beberapa ikon di bilah tugas saat mengharapkan hanya melihat satu. Ditambah efek samping dari masalah pengkodean ..
  • Mimpi buruk untuk dikodekan dan dipelihara:
    • Sebuah dialog modal menawarkan kesempatan mudah untuk fokus perhatian pada isi dialog yang - pilih / memperbaiki / membatalkan ini, kemudian melanjutkan. Beberapa frame tidak.
    • Dialog (atau bilah alat mengambang) dengan induk akan muncul ke depan ketika induk diklik - Anda harus menerapkannya dalam bingkai jika itu adalah perilaku yang diinginkan.

Ada beberapa cara untuk menampilkan banyak elemen dalam satu GUI, misalnya:

  • CardLayout( demo singkat . ). Baik untuk:
    1. Menampilkan dialog seperti penyihir.
    2. Menampilkan daftar, bagan dll. Pilihan untuk item yang memiliki komponen terkait.
    3. Membalik antara tidak ada komponen dan komponen yang terlihat.
  • JInternalFrameSayaJDesktopPane biasanya digunakan untuk MDI .
  • JTabbedPane untuk kelompok komponen.
  • JSplitPane Cara untuk menampilkan dua komponen yang penting antara satu atau yang lain (ukuran) bervariasi sesuai dengan apa yang dilakukan pengguna.
  • JLayeredPane jauh banyak komponen baik ..layered.
  • JToolBarbiasanya berisi grup tindakan atau kontrol. Dapat diseret di sekitar GUI, atau mematikannya sepenuhnya sesuai dengan kebutuhan pengguna. Seperti yang disebutkan di atas, akan meminimalkan / mengembalikan sesuai dengan yang dilakukan orang tua.
  • Sebagai item dalam JList(contoh sederhana di bawah).
  • Sebagai node dalam a JTree.
  • Tata letak bersarang .

Tetapi jika strategi itu tidak berhasil untuk kasus penggunaan tertentu, coba yang berikut ini. Buat satu induk tunggal JFrame, kemudian buat JDialogatau JOptionPaneinstans muncul untuk elemen bebas-mengambang lainnya, menggunakan bingkai sebagai induk untuk dialog.

Banyak gambar

Dalam hal ini di mana beberapa elemen adalah gambar, akan lebih baik menggunakan salah satu dari berikut ini sebagai gantinya:

  1. Satu JLabel(berpusat di panel gulir) untuk menampilkan gambar mana saja yang diminati pengguna pada saat itu. Seperti yang terlihat di ImageViewer.
  2. Satu baris JList. Seperti yang terlihat dalam jawaban ini . Bagian 'baris tunggal' itu hanya berfungsi jika semuanya memiliki dimensi yang sama. Sebagai alternatif, jika Anda siap untuk menskala gambar dengan cepat, dan semuanya memiliki rasio aspek yang sama (mis. 4: 3 atau 16: 9).

Andrew Thompson
sumber
4
@AndrewThompson Saya tidak pernah menemukan situasi di mana saya membutuhkan banyak JFrames sebelumnya dan tidak pernah mempertimbangkan masalah itu, terima kasih telah menjelaskan!
Jeffrey
4
@ user417896 "Tergantung." Tidak, tidak. Saya telah menggunakan Gimp. Ini mengerikan dan harus menjadi MDI.
Andrew Thompson
4
@ryvantage "Haruskah (Excel) menjadi MDI?" Pertanyaan bagus. Saya merasa itu harus ditawarkan kepada pengguna dua arah (tentu tidak hanya dalam bentuk MDI). Sebagai contoh: 1) Saat ini saya menggunakan TextPad, dan dengan konfigurasi sesuai pilihan saya, itu membuka contoh terpisah, yang masing-masing menawarkan beberapa dokumen yang ditampilkan dalam daftar. 2) Meskipun saya biasanya akan menggunakan FF dalam mode tab, kadang-kadang saya menyeret tab ke jendela baru. - Faktor umum dalam contoh adalah pilihan pengguna. Kirim aplikasi. 'namun pengguna menginginkannya'.
Andrew Thompson
12
@AndrewThompson Anda baru saja membalas argumen Anda sendiri dengan komentar terakhir Anda. Dalam jawaban utama Anda, Anda mengatakan ini adalah praktik buruk dan tidak boleh dilakukan, tetapi dalam komentar Anda di atas Anda mengatakan bahwa Anda kadang-kadang menyukai SDI dan kami harus menawarkan pilihan kepada pengguna kami. Tentunya, inilah yang dikatakan user417896 di atas. Tergantung. Ini adalah salah satu yang paling saya benci tentang sesama pengembang. Fakta bahwa banyak dari mereka menjadi fanatik secara agama tentang apa yang disebut 'praktik terbaik'. Kami tidak akan memiliki UI inovatif yang kami miliki saat ini jika kita semua berpegang pada 'praktik terbaik' dan tidak berpikir di luar lapangan.
DuncanKinnear
4
Generalisasi yang sangat besar! Itu tidak SELALU buruk untuk membiarkan pengguna mengontrol windows mereka secara individual, dan mengaksesnya secara individual dari task bar. Praktik yang baik adalah menyadari semua opsi, dan memilih satu dengan cerdas. Tentu saja ada beberapa kasus di mana beberapa JFrames masuk akal.
Dawood ibn Kareem
203

Berbagai JFramependekatan telah saya terapkan sejak saya mulai memprogram aplikasi Swing. Sebagian besar, saya melakukannya pada awalnya karena saya tidak tahu apa-apa. Namun , ketika saya semakin matang dalam pengalaman dan pengetahuan saya sebagai pengembang dan mulai membaca dan menyerap pendapat dari banyak pengembang Java yang lebih berpengalaman secara online, saya berusaha untuk beralih dari berbagai JFramependekatan (baik dalam proyek saat ini dan proyek masa depan ) hanya untuk bertemu dengan ... dapatkan ini ... penolakan dari klien saya! Ketika saya mulai menerapkan dialog modal untuk mengontrol "child" windows dan JInternalFrames untuk komponen yang terpisah, klien saya mulai mengeluh!Saya cukup terkejut, karena saya melakukan apa yang saya pikir merupakan praktik terbaik! Tapi, seperti kata mereka, "Istri yang bahagia adalah hidup yang bahagia." Hal yang sama berlaku untuk klien Anda. Tentu saja, saya seorang kontraktor sehingga pengguna akhir saya memiliki akses langsung ke saya, pengembang, yang jelas bukan skenario umum.

Jadi, saya akan menjelaskan manfaat dari JFramependekatan berganda , serta mitos-bust beberapa kontra yang disajikan orang lain.

  1. Fleksibilitas terbaik dalam tata letak - Dengan memungkinkan pengguna terpisah JFrame, Anda memberi pengguna akhir Anda kemampuan untuk menyebar dan mengontrol apa yang ada di layarnya. Konsepnya terasa "terbuka" dan tidak membatasi. Anda kehilangan ini ketika Anda pergi ke satu besar JFramedan banyak JInternalFrame.
  2. Bekerja dengan baik untuk aplikasi yang sangat termodulasi - Dalam kasus saya, sebagian besar aplikasi saya memiliki 3 - 5 "modul" besar yang benar-benar tidak ada hubungannya satu sama lain. Misalnya, satu modul mungkin merupakan dasbor penjualan dan satu mungkin dasbor akuntansi. Mereka tidak berbicara satu sama lain atau apa pun. Namun, eksekutif mungkin ingin membuka keduanya dan mereka menjadi bingkai terpisah di taskbar membuat hidupnya lebih mudah.
  3. Memudahkan pengguna akhir untuk mereferensikan materi luar - Sekali, saya mengalami situasi ini: Aplikasi saya memiliki "penampil data," dari mana Anda bisa mengklik "Tambah Baru" dan itu akan membuka layar entri data. Awalnya, keduanya JFrames. Namun, saya ingin layar entri data menjadi JDialogyang orang tuanya adalah penampil data. Saya melakukan perubahan, dan segera saya menerima telepon dari pengguna akhir yang sangat bergantung pada fakta bahwa dia dapat meminimalkan atau menutup pemirsa dan tetap membuka editor sementara dia mereferensikan bagian lain dari program (atau situs web, saya tidak ingat). Dia tidak menggunakan multi-monitor, jadi dia perlu entri dialog menjadi yang pertama dan yang lainnyamenjadi yang kedua, dengan penampil data yang sepenuhnya tersembunyi. Ini tidak mungkin dengan JDialogdan tentu saja tidak mungkin dengan JInternalFrame. Dengan enggan saya mengubahnya kembali menjadi terpisah JFrameskarena kewarasannya, tetapi itu memberi saya pelajaran penting.
  4. Mitos: Sulit dikodekan - Ini tidak benar dalam pengalaman saya. Saya tidak mengerti mengapa akan lebih mudah untuk membuat JInternalFramedaripada JFrame. Bahkan, dalam pengalaman saya, JInternalFramesmenawarkan fleksibilitas yang jauh lebih sedikit. Saya telah mengembangkan cara sistematis untuk menangani pembukaan & penutupan JFrameaplikasi saya yang benar-benar berfungsi dengan baik. Saya mengontrol frame hampir sepenuhnya dari dalam kode frame itu sendiri; pembuatan bingkai baru, SwingWorkeryang mengontrol pengambilan data pada utas latar belakang dan kode GUI pada EDT, mengembalikan / membawa ke depan bingkai jika pengguna mencoba membukanya dua kali, dll. Yang Anda butuhkan untuk membuka JFrameadalah memanggil metode statis publik open()dan metode terbuka, dikombinasikan dengan awindowClosing() event menangani sisanya (apakah frame sudah terbuka? apakah tidak terbuka, tetapi memuat? dll.) Saya membuat pendekatan ini sebagai template sehingga tidak sulit untuk diterapkan untuk setiap frame.
  5. Mitos / Belum Terbukti: Sumberdaya Berat - Saya ingin melihat beberapa fakta di balik pernyataan spekulatif ini. Meskipun, mungkin, Anda bisa mengatakan JFramekebutuhan lebih banyak ruang daripada JInternalFrame, bahkan jika Anda membuka 100- JFramean, berapa banyak sumber daya yang akan Anda konsumsi? Jika kekhawatiran Anda adalah kebocoran memori karena sumber daya: panggilan dispose()membebaskan semua sumber daya yang digunakan oleh frame untuk pengumpulan sampah (dan, sekali lagi saya katakan, a JInternalFrameharus meminta perhatian yang sama persis).

Saya sudah banyak menulis dan saya merasa bisa menulis lebih banyak. Ngomong-ngomong, saya harap saya tidak terpilih sebagai pemilih karena itu pendapat yang tidak populer. Pertanyaannya jelas merupakan pertanyaan yang berharga dan saya harap saya telah memberikan jawaban yang berharga, meskipun itu bukan pendapat umum.

Contoh yang bagus dari banyak frame / dokumen tunggal per frame ( SDI ) vs frame tunggal / beberapa dokumen per frame ( MDI ) adalah Microsoft Excel. Beberapa manfaat MDI:

  • dimungkinkan untuk memiliki beberapa jendela dalam bentuk non persegi panjang - sehingga mereka tidak menyembunyikan desktop atau jendela lain dari proses lain (misalnya browser web)
  • dimungkinkan untuk membuka jendela dari proses lain melalui satu jendela Excel sambil menulis di jendela Excel kedua - dengan MDI, mencoba menulis di salah satu jendela internal akan memberikan fokus ke seluruh jendela Excel, sehingga menyembunyikan jendela dari proses lain
  • dimungkinkan untuk memiliki dokumen yang berbeda pada layar yang berbeda, yang sangat berguna ketika layar tidak memiliki resolusi yang sama

SDI (Single-Document Interface, yaitu, setiap jendela hanya dapat memiliki satu dokumen):

masukkan deskripsi gambar di sini

MDI (Antarmuka Multi-Dokumen, yaitu, setiap jendela dapat memiliki banyak dokumen):

masukkan deskripsi gambar di sini

ryvantage
sumber
16
Dipikirkan dengan baik. Jika Anda memiliki banyak modul yang tidak ada hubungannya satu sama lain, mengapa tidak membuat aplikasi terpisah? Juga, tidak ada batasan yang mengatakan Anda harus menggunakan dialog modal , Anda bisa menggunakan dialog modeless untuk dijadikan "bingkai" kedua.
Jeffrey
Jawaban yang sangat bagus dan jawaban terperinci meskipun saya harus setuju dengan @kleopatra untuk yang satu ini .. Saya pernah memiliki aplikasi dengan lebih dari seratus layar di mana pengguna ingin membandingkan data keluaran dari beberapa layar / layar yang sama dengan input yang berbeda. Kami membangun sistem windowing khusus untuk memungkinkan kami melakukan itu. Pengguna hanya lebih nyaman dengan memiliki 2 JFrames untuk tetap bersebelahan;)
j_textz
Sementara saya memahami argumen Anda, saya masih lebih suka memiliki semuanya dalam satu JFramedan orangtua yang besar JTabbedPane; tetapi dengan kemungkinan untuk membuka jendela kedua (atau bahkan lebih) di mana tata letak bisa berbeda, menawarkan karenanya perilaku hybrid di mana pecinta SDI senang dan yang MDI juga. Dalam semua kasus, saya selalu dianggap JInternalFramesebagai pola mengerikan yang memberi Anda semua ketidaknyamanan dari kedua dunia. Fleksibilitas yang mereka tawarkan hanya menyebalkan dan mereka memakan banyak ruang layar yang berharga tanpa tujuan nyata.
Guillaume Polet
Saya setuju SDI kadang-kadang sesuai (dan pengguna sering lebih suka). Ada satu kekurangan lagi, dan saya tidak menemukan solusi untuk itu sejauh ini, sayangnya: masing JFrame- masing mendapat ikon taskbar sendiri. Terkadang ini persis apa yang Anda inginkan, tetapi terkadang tidak. Di WinAPI ini mudah untuk dikonfigurasi, tetapi di Swing sepertinya tidak bisa dilakukan.
Suma
@uma dalam hal itu saya pikir saya akan memilih JDialoglebih dari satu JFrame.
ryvantage
51

Saya ingin melawan argumen "tidak ramah pengguna" dengan contoh yang baru saja saya gunakan.

Dalam aplikasi kami, kami memiliki jendela utama di mana pengguna menjalankan berbagai 'program' sebagai tab terpisah. Sebisa mungkin kami telah mencoba untuk menjaga aplikasi kami ke jendela tunggal ini.

Salah satu 'program' yang mereka jalankan menyajikan daftar laporan yang telah dihasilkan oleh sistem, dan pengguna dapat mengklik ikon di setiap baris untuk membuka dialog penampil laporan. Penampil ini menunjukkan setara dengan halaman potret / lansekap A4 laporan, sehingga pengguna menyukai jendela ini menjadi cukup besar, hampir memenuhi layar mereka.

Beberapa bulan yang lalu kami mulai mendapatkan permintaan dari pelanggan kami untuk membuat model jendela penampil laporan ini, sehingga mereka dapat membuka banyak laporan sekaligus.

Untuk beberapa waktu saya menolak permintaan ini karena saya tidak berpikir ini adalah solusi yang baik. Namun, pikiran saya berubah ketika saya mengetahui bagaimana para pengguna mengatasi 'kekurangan' sistem kami.

Mereka membuka pemirsa, menggunakan fasilitas 'Simpan Sebagai' untuk menyimpan laporan sebagai PDF ke direktori tertentu, menggunakan Acrobat Reader untuk membuka file PDF, dan kemudian mereka akan melakukan hal yang sama dengan laporan berikutnya. Mereka akan memiliki beberapa Acrobat Readers berjalan dengan berbagai keluaran laporan yang ingin mereka lihat.

Jadi saya mengalah dan membuat modeless penonton. Ini berarti bahwa setiap pengunjung memiliki ikon bilah tugas.

Ketika versi terbaru dirilis kepada mereka minggu lalu, respon luar biasa dari mereka adalah bahwa mereka MENYUKAINYA. Ini adalah salah satu peningkatan terbaru kami yang paling populer untuk sistem.

Jadi Anda teruskan dan beri tahu pengguna Anda bahwa apa yang mereka inginkan buruk, tetapi pada akhirnya itu tidak akan membantu Anda.

BEBERAPA CATATAN:

  • Tampaknya menjadi praktik terbaik untuk menggunakan JDialog untuk windows modeless ini
  • Gunakan konstruktor yang menggunakan argumen baru ModalityTypealih - alih boolean modal. Inilah yang memberi dialog ini ikon bilah tugas.
  • Untuk dialog modeless, berikan orang tua nol ke konstruktor, tetapi temukan relatif terhadap jendela 'orang tua' mereka.
  • Versi 6 Java pada Windows memiliki bug yang berarti bahwa jendela utama Anda bisa menjadi 'selalu di atas' tanpa Anda beri tahu. Tingkatkan ke versi 7 untuk memperbaikinya
DuncanKinnear
sumber
6
Ini persis pengalaman saya juga. Jika ada satu hal yang saya yakini, itu adalah Anda melakukan sesuatu yang salah ketika orang mencoba dan menghindari keramahan pengguna Anda untuk melakukan apa pun yang benar-benar ingin mereka lakukan. Fungsionalitas adalah raja.
ryvantage
Salah satu cara untuk menyiasatinya, adalah mengizinkan beberapa JFrame dibuka, semuanya menawarkan fungsi yang sama, tetapi secara default semuanya dilakukan dalam satu jendela. Ini sebenarnya memungkinkan pengguna untuk memilih antara SDI atau MDI.
Guillaume Polet
Maaf? Bisakah Anda menjelaskan solusi Anda sedikit lebih baik? Bagaimana itu bisa menjadi satu jendela DAN beberapa jendela? Kami memiliki satu jendela utama di mana aplikasi utama berjalan, tetapi kadang-kadang kita perlu membuka dialog, dan kadang-kadang dialog tersebut (berdasarkan kebutuhan pengguna) perlu dimodelkan. Membuat aturan bahwa antarmuka harus seperti ini atau itu hanya akan menggali lubang besar untuk Anda sendiri.
DuncanKinnear
1
@GuillaumePolet Saya setuju dengan Duncan, bisakah Anda menjelaskan maksud Anda sedikit lebih? Saya berbagi kebingungannya
Ungeheuer
Saya pikir maksudnya adalah bahwa pengguna dapat memulai beberapa salinan aplikasi ('JFrame') tetapi di dalam masing-masing itu adalah SDI. Namun, aplikasi klien kami adalah klien yang sangat tebal, jadi ini akan menjadi pendekatan yang haus sumber daya.
DuncanKinnear
20

Buat jInternalFrame menjadi bingkai utama dan membuatnya tidak terlihat. Kemudian Anda dapat menggunakannya untuk acara selanjutnya.

jInternalFrame.setSize(300,150);
jInternalFrame.setVisible(true);
Virendra Singh Rathore
sumber
19

Sudah lama sejak terakhir kali saya menyentuh ayunan tetapi secara umum adalah praktik yang buruk untuk melakukan ini. Beberapa kelemahan utama yang terlintas dalam pikiran:

  • Ini lebih mahal: Anda harus mengalokasikan sumber daya jauh lebih banyak untuk menggambar JFrame jenis lain dari wadah jendela, seperti Dialog atau JInternalFrame.

  • Tidak ramah pengguna: Tidak mudah menavigasi ke sekelompok JFrame yang terjebak bersama, itu akan terlihat seperti aplikasi Anda adalah sekumpulan aplikasi yang desainnya tidak konsisten dan buruk.

  • Sangat mudah untuk menggunakan JInternalFrame Ini semacam retorical, sekarang jauh lebih mudah dan orang lain lebih pintar (atau dengan waktu luang lebih banyak) daripada yang telah kita pikirkan melalui pola Desktop dan JInternalFrame, jadi saya akan merekomendasikan untuk menggunakannya.

Necronet
sumber
7
Apakah Anda tidak memiliki efek yang sama untuk pengguna ketika menggunakan banyak JInternalFramejuga? Secara pribadi, saya tidak setuju dengan penggunaan JInternalFrame's! CardLayoutadalah berkah yang nyata!
Branislav Lazic
4
Saya setuju dengan @ brano88. JInternalFrametidak menawarkan keuntungan dalam salah satu dari tiga kasus yang Anda sebutkan (1. di mana bukti yang JInternalFramelebih ringan dari JFrame? 2. JInternalFrameS Anda bisa sama berantakan / berantakan / terjebak bersama sebagai sekelompok JFrames. 3. Bagaimana JInternalFramelebih mudah? Ini adalah kode yang sama persis, kecuali satu yang terkandung dalam JDesktopPanedan satu terkandung dalam area layar alami Mereka terdengar sama rumit untuk saya)..
ryvantage
1
1. JFrame adalah komponen kelas berat dibandingkan dengan JInternalFrame yang ringan. 2. Pernahkah Anda melihat aplikasi yang berisi banyak jendela sekaligus berfungsi? IDE, Browser, bahkan dalam aplikasi keuangan itu adalah tujuan untuk menjaganya dalam ruang lingkup yang sama. 3. Saya telah menemukan JIF sangat mudah digunakan di masa lalu dan tidak memiliki keluhan tentu saja memilih komponen yang paling sesuai dengan skenario
Necronet
4
1. Saya ingin melihat buktinya. Keduanya adalah objek, keduanya JComponents, keduanya memiliki struktur yang hampir identik, kecuali satu diberikan pada a JDesktopdan satu tidak. Sekali lagi, maaf, tapi saya yakin Anda berspekulasi tentang "berat" dari JFrame. 2. Aplikasi saya menggunakan SDI dan klien saya sangat senang. Namun, Anda mengatakan "satu ton jendela," yang tentu saja akan payah. Tapi, maksud saya adalah ini: "satu ton" JInternalFrameakan mengisap sama buruknya! Jika Anda mengatakan JIF memungkinkan Anda untuk menjadi desainer UI yang ceroboh, maka itu mengerikan. Kekacauan berantakan adalah kekacauan berantakan, apakah JF atau JIF.
ryvantage
2
"tentu saja memilih komponen yang paling sesuai dengan skenario"
Necronet
10

Praktek yang buruk pasti. Salah satu alasannya adalah bahwa itu tidak terlalu 'user-friendly' karena setiap JFramemenunjukkan ikon taskbar baru. Mengontrol banyak JFrames akan membuat Anda merobek rambut.

Secara pribadi, saya akan menggunakan SATU JFrameuntuk jenis aplikasi Anda. Metode menampilkan banyak hal terserah Anda, ada banyak. Canvases, JInternalFrame, CardLayout, bahkan JPanels mungkin.

Beberapa objek JFrame = Nyeri, masalah, dan masalah.

Matt Dawsey
sumber
9
hmm ... tidak ada yang baru dibandingkan dengan jawaban yang diterima, afaics?
kleopatra
5
"Setiap JFrame menunjukkan ikon bilah tugas baru" - ini hanya berlaku di Windows! Pada Mac OS X setiap aplikasi hanya memiliki satu ikon dok, terlepas dari berapa banyak jendela yang dibuka, dan itu adalah umum untuk aplikasi memiliki beberapa jendela tingkat atas.
Rolf
8

Saya pikir menggunakan beberapa Jframebukan ide yang baik.

Sebaliknya, kita dapat menggunakan JPanellebih dari satu atau lebih JPanelyang sama JFrame.

Kita juga bisa beralih di antara ini JPanel. Jadi itu memberi kita kebebasan untuk menampilkan lebih dari pada sesuatu di JFrame.

Untuk masing-masing JPanelkita dapat merancang hal-hal yang berbeda dan semua ini JPaneldapat ditampilkan pada JFramesatu per satu.

Untuk beralih di antara JPanelpenggunaan ini JMenuBardengan JMenuItemsuntuk masing-masing JPanelatau 'JButton for eachJPanel`.

Lebih dari satu JFramebukanlah praktik yang baik, tetapi tidak ada yang salah jika kita menginginkan lebih dari satu JFrame.

Tetapi lebih baik mengubah satu JFrameuntuk kebutuhan kita yang berbeda daripada memiliki banyak JFrame.

Lijo
sumber
5

Jika bingkai akan memiliki ukuran yang sama, mengapa tidak membuat bingkai dan meneruskannya sebagai referensi.

Ketika Anda telah melewati bingkai Anda kemudian dapat memutuskan bagaimana mengisinya. Ini akan seperti memiliki metode untuk menghitung rata-rata satu set angka. Apakah Anda akan membuat metode berulang kali?

Keith Spriggs
sumber
1
Itu pada dasarnya melakukan apa yang dapat dilakukan Cardlayout dan JTabbedPane, tetapi melakukannya secara terbalik dan membuat kode Anda terlalu rumit sementara Anda memiliki solusi bersih dan mudah untuk mencapai hal yang sama.
Guillaume Polet
4

Ini bukan praktik yang baik tetapi meskipun Anda ingin menggunakannya Anda dapat menggunakan pola tunggal sebagai yang baik. Saya telah menggunakan pola tunggal di sebagian besar proyek saya itu bagus.

arunjoseph
sumber
3
Pola Singleton adalah mimpi buruk. Setiap proyek yang ingin skala harus mencoba untuk menghindari pola tunggal dengan segala cara.
Guillaume Polet