Soalan ini berpunca daripada pengguna yang menghadapi isu di mana hanya komponen teratas GUI mereka kelihatan apabila program dijalankan. Kod pengguna cuba memaparkan berbilang panel dan medan teks dalam bingkai, tetapi hanya satu komponen yang kelihatan pada mulanya. Percanggahan ini menyebabkan mereka mengesyaki bahawa unsur-unsur lain sedang dikaburkan.
Selepas meneliti kod, ternyata isu itu terletak pada BorderLayout of anak tetingkap kandungan JFrame. BorderLayout hanya membenarkan satu komponen untuk menduduki kedudukan tengah, iaitu di mana semua komponen diletakkan pada mulanya.
Untuk menyelesaikan masalah ini, pengguna harus menetapkan kekangan khusus kepada setiap komponen apabila menambahkannya pada BorderLayout. Coretan kod berikut menunjukkan pendekatan ini:
f.add(top, BorderLayout.PAGE_START); f.add(mid); f.add(bot, BorderLayout.PAGE_END);
Kod ini meletakkan panel atas pada permulaan bingkai, meninggalkan panel tengah dan bawah tanpa kekangan. Akibatnya, ia akan dipaparkan secara menegak di bawah panel atas.
Selain menyelesaikan isu keterlihatan, pengguna juga menyatakan keinginan untuk meningkatkan prestasi program tersebut. Berikut ialah beberapa cadangan tambahan:
Dengan melaksanakan perubahan ini, program ini bukan sahaja akan memaparkan semua komponen seperti yang dimaksudkan tetapi juga berjalan dengan lebih cekap dan ditutup dengan lancar apabila pengguna menekan tutup butang.
Atas ialah kandungan terperinci Mengapa hanya satu komponen yang muncul dalam JFrame saya walaupun menambah berbilang komponen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!