Dalam permainan teka-teki yang disediakan, di mana jubin diletakkan secara rawak dan disusun semula pada grid, pengguna telah melaporkan bahawa JPanel mengandungi imej tidak dikemas kini dengan betul selepas imej berubah.
Reka bentuk teka-teki melibatkan meletakkan imej yang dipesan secara rawak dalam grid 4x4 dalam JPanel. Apabila pengguna mengklik pada jubin, atributnya akan diperiksa dan jika ia tidak berada dalam kedudukan yang betul, ia ditukar dengan imej lain dalam ingatan, jika wujud.
Pada mulanya, pembangun mengesyaki bahawa isu itu mungkin dengan kaedah addComponent yang tidak menggantikan imej lama dengan betul dengan kemas kini. satu.
Setelah penyiasatan lanjut dan penggabungan cadangan daripada penyumbang yang membantu, isu itu akhirnya dikenal pasti sebagai ralat dalam kaedah addComponent(). Khususnya, kaedah itu tidak mengesahkan semula JPanel selepas ia diubah suai, yang menghalang imej yang dikemas kini daripada dipaparkan dengan betul.
Berikut ialah versi kaedah addComponents() yang diperbaik dengan pengesahan yang diperlukan:
public void addComponents(Img[] im){ this.removeAll(); for(int i=0; i<16; i++){ im[i].addActionListener(this); im[i].setPreferredSize(new Dimension(53,53)); add(im[i]); } this.revalidate(); }
Selain kaedah pengesahan semula, faktor lain yang perlu dipertimbangkan semasa mengemas kini JPanel termasuk:
Dengan menangani faktor ini, pembangun boleh menyelesaikan isu di mana Komponen JPanel gagal dikemas kini secara dinamik.
Atas ialah kandungan terperinci Mengapa JPanel Saya Tidak Mengemas kini Selepas Pertukaran Imej dalam Permainan Teka-teki Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!