Rumah >Java >javaTutorial >Mengapa JPanel Saya Tidak Mengemas kini dalam Permainan Teka-teki Berasaskan Jubin Saya?

Mengapa JPanel Saya Tidak Mengemas kini dalam Permainan Teka-teki Berasaskan Jubin Saya?

Susan Sarandon
Susan Sarandonasal
2024-11-29 01:23:11330semak imbas

Why Isn't My JPanel Updating in My Tile-Based Puzzle Game?

JPanel Tidak Mengemas kini dalam Permainan Teka-teki

Dalam permainan teka-teki dengan jubin yang diletakkan secara rawak, JPanel yang mengehos jubin tidak mengemas kini apabila imej ditambah kepadanya. Isu ini menghalang imej baharu daripada dipaparkan, menyebabkan teka-teki tidak boleh dimainkan.

Memahami Masalah

Isunya terletak pada kaedah addComponents() yang digunakan untuk tambah imej pada JPanel. Apabila imej yang dikemas kini dihantar kepada kaedah, ia mengalih keluar komponen sedia ada dengan betul tetapi gagal untuk mengesahkan semula dan mengecat semula JPanel dengan betul. Ini mengakibatkan imej baharu tidak dipaparkan.

Penyelesaian

Untuk menyelesaikan isu tersebut, kaedah addComponent() harus disemak untuk memasukkan langkah pengesahan semula dan pengecatan semula yang diperlukan . Kod yang dikemas kini di bawah memastikan JPanel dikemas kini dengan imej baharu:

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();

    **Repaint the JPanel to display the updated images**
    this.repaint();
}

Dengan pengubahsuaian ini, kaedah addComponent() mengalih keluar imej sedia ada dengan betul, menambah imej baharu, mengesahkan semula JPanel dan mengecat semula ia dengan jubin yang dikemas kini. Permainan teka-teki kini seharusnya berfungsi dengan betul, memaparkan imej baharu dalam JPanel.

Atas ialah kandungan terperinci Mengapa JPanel Saya Tidak Mengemas kini dalam Permainan Teka-teki Berasaskan Jubin Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn