Dalam aplikasi Java Swing ini, JPanel dalam JFrame perlu ditukar dengan JPanel lain berdasarkan tindakan pengguna. Meneroka pendekatan yang sesuai untuk mencapai ini, kod di bawah telah diuji:
panel = new CustomJPanelWithComponentsOnIt(); parentFrameJPanelBelongsTo.pack();
Walau bagaimanapun, pendekatan ini gagal menukar panel.
Penyelesaian: Memanfaatkan Tata Letak Kad
Penyelesaian ideal untuk senario ini terletak pada penggunaan CardLayout, pengurus susun atur yang membolehkan paparan berbilang panel sambil secara terpilih memaparkan hanya satu panel pada masa tertentu.
Untuk melaksanakan CardLayout, langkah berikut boleh diambil:
Buat objek CardLayout:
CardLayout cardLayout = new CardLayout();
Tetapkan susun atur bekas yang akan memegang panel (cth., JFrame):
parentFrameJPanelBelongsTo.setLayout(cardLayout);
Tambah panel pada bekas menggunakan kekangan CardLayout:
parentFrameJPanelBelongsTo.add(new CustomJPanelWithComponentsOnIt(), "panel1"); parentFrameJPanelBelongsTo.add(new AnotherJPanel(), "panel2");
Tetapkan panel awal kepada dipaparkan:
cardLayout.show(parentFrameJPanelBelongsTo, "panel1");
Tukar panel aktif secara dinamik berdasarkan interaksi pengguna:
cardLayout.show(parentFrameJPanelBelongsTo, "panel2");
Atas ialah kandungan terperinci Bagaimana Menukar Panel Secara Dinamik Dalam JFrame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!