cari
RumahJavajavaTutorialMengapakah JPanel Saya Tidak Kemas Kini Selepas Menambah atau Mengalih Imej dalam Permainan Teka-teki?

Why Doesn't My JPanel Update After Adding or Moving Images in a Puzzle Game?

JPanel dalam Permainan Teka-teki Tidak Mengemas kini

Dalam permainan teka-teki mudah, imej yang mewakili jubin diletakkan secara rawak pada grid. Setiap imej mempunyai atribut 'tempat' dan 'nombor' yang menunjukkan kedudukan semasa dan yang dikehendaki. Logik permainan menukar imej yang sepadan dengan 'nombor' dengan betul dan mengemas kini atribut 'tempat' mereka. Walau bagaimanapun, menambah imej yang dikemas kini pada JPanel tidak mengemas kini grid yang dipaparkan.

Untuk menangani isu ini, kami akan mengubah suai kaedah addComponent() untuk memuat semula JPanel dengan betul:

public void addComponents(Img[] im){
    this.removeAll();
    for(int i=0; i<p>Dengan menggunakan revalidate() dan repaint(), kami memaksa JPanel untuk mengira semula susun aturnya dan mengemas kini paparan dengan yang baharu imej.</p><p>Sebagai alternatif, pertimbangkan contoh kod berikut, yang menggunakan pendekatan yang lebih cekap:</p><pre class="brush:php;toolbar:false">import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.GridLayout;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.WindowConstants;

public class PuzzleGame {

    private static final int N = 4;
    private final JPanel panel = new JPanel(new GridLayout(N, N));
    private final JButton[][] buttons = new JButton[N][N];
    private final BufferedImage image;

    private PuzzleGame() throws IOException {
        image = ImageIO.read(new File("image.jpg"));
        createButtons();
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
        
        // Timer to simulate image swapping
        Timer timer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                shuffleButtons();
            }
        });
        timer.start();
    }

    private void createButtons() {
        int count = 0;
        for (int i = 0; i <p>Kod ini mencipta butang imej yang dihiris dan menyimpannya dalam grid 4x4. Pemasa merangsang pengocokan imej dengan menggerakkan butang kanan atas ke kedudukan pertama. Kaedah revalidate() dan repaint() memastikan UI dikemas kini dengan betul selepas setiap pergerakan butang.</p>

Atas ialah kandungan terperinci Mengapakah JPanel Saya Tidak Kemas Kini Selepas Menambah atau Mengalih Imej dalam Permainan Teka-teki?. 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
Bagaimanakah platform kemerdekaan memberi manfaat kepada aplikasi Java peringkat perusahaan?Bagaimanakah platform kemerdekaan memberi manfaat kepada aplikasi Java peringkat perusahaan?May 03, 2025 am 12:23 AM

Java digunakan secara meluas dalam aplikasi peringkat perusahaan kerana kemerdekaan platformnya. 1) Kemerdekaan platform dilaksanakan melalui Java Virtual Machine (JVM), supaya kod itu dapat dijalankan di mana -mana platform yang menyokong Java. 2) Ia memudahkan proses penyebaran dan pembangunan silang platform, memberikan kelonggaran dan skalabiliti yang lebih besar. 3) Walau bagaimanapun, adalah perlu untuk memberi perhatian kepada perbezaan prestasi dan keserasian perpustakaan pihak ketiga dan mengamalkan amalan terbaik seperti menggunakan kod Java tulen dan ujian silang platform.

Apakah peranan Java dalam pembangunan peranti IoT (Internet of Things), memandangkan kemerdekaan platform?Apakah peranan Java dalam pembangunan peranti IoT (Internet of Things), memandangkan kemerdekaan platform?May 03, 2025 am 12:22 AM

JavaPlaysasignificantroleiniotduetoitsplatformindant.1) itAllowscodetobewrittenceandondrariousdevices.2) Java'secosystemprovidesuseFullibrariesforiot.3)

Huraikan senario di mana anda menghadapi isu khusus platform di Java dan bagaimana anda menyelesaikannya.Huraikan senario di mana anda menghadapi isu khusus platform di Java dan bagaimana anda menyelesaikannya.May 03, 2025 am 12:21 AM

ThesolutionToHandleFilePathsacrossWindowsandLinuxinjavaistousePaths.get () dariTheJava.nio.FilePackage.1) UsePaths.get () WithSystem.GetProperty ("user.dir")

Apakah faedah kemerdekaan platform Java untuk pemaju?Apakah faedah kemerdekaan platform Java untuk pemaju?May 03, 2025 am 12:15 AM

Java'splatformindectiveissignificantantbecauseitallowsdeveloperstowritecodeonceandrunitonanyplatformwithajvm.This "writeonce, runanywhere" (wora) dearflofers: 1) cross-platformcompatuibility, enablingdeploymentacsdifferentoswithoutoSesen)

Apakah kelebihan menggunakan Java untuk aplikasi web yang perlu dijalankan pada pelayan yang berbeza?Apakah kelebihan menggunakan Java untuk aplikasi web yang perlu dijalankan pada pelayan yang berbeza?May 03, 2025 am 12:13 AM

Java sesuai untuk membangunkan aplikasi web cross-server. 1) Falsafah "Tulis Sekali, Di Mana -mana" Java membuat kodnya dijalankan di mana -mana platform yang menyokong JVM. 2) Java mempunyai ekosistem yang kaya, termasuk alat seperti Spring dan Hibernate, untuk memudahkan proses pembangunan. 3) Java melaksanakan dengan baik dalam prestasi dan keselamatan, menyediakan pengurusan memori yang cekap dan jaminan keselamatan yang kuat.

Bagaimanakah JVM menyumbang kepada kemampuan 'Write Once, Run, di mana -mana' Java?Bagaimanakah JVM menyumbang kepada kemampuan 'Write Once, Run, di mana -mana' Java?May 02, 2025 am 12:25 AM

JVM melaksanakan ciri-ciri Wora Java melalui tafsiran bytecode, API bebas platform dan pemuatan kelas dinamik: 1. Bytecode ditafsirkan sebagai kod mesin untuk memastikan operasi silang platform; 2. Perbezaan sistem operasi abstrak API standard; 3. Kelas dimuatkan secara dinamik pada masa runtime untuk memastikan konsistensi.

Bagaimanakah versi baru Java menangani isu-isu khusus platform?Bagaimanakah versi baru Java menangani isu-isu khusus platform?May 02, 2025 am 12:18 AM

Versi terbaru Java berkesan menyelesaikan masalah khusus platform melalui pengoptimuman JVM, penambahbaikan perpustakaan standard dan sokongan perpustakaan pihak ketiga. 1) Pengoptimuman JVM, seperti ZGC Java11 meningkatkan prestasi pengumpulan sampah. 2) Penambahbaikan perpustakaan standard, seperti sistem modul Java9 yang mengurangkan masalah berkaitan platform. 3) Perpustakaan pihak ketiga menyediakan versi yang dioptimumkan platform, seperti OpenCV.

Terangkan proses pengesahan bytecode yang dilakukan oleh JVM.Terangkan proses pengesahan bytecode yang dilakukan oleh JVM.May 02, 2025 am 12:18 AM

Proses pengesahan bytecode JVM termasuk empat langkah utama: 1) Periksa sama ada format fail kelas mematuhi spesifikasi, 2) mengesahkan kesahihan dan ketepatan arahan bytecode, 3) melakukan analisis aliran data untuk memastikan keselamatan jenis, dan 4) mengimbangi ketelitian dan prestasi pengesahan. Melalui langkah -langkah ini, JVM memastikan bahawa hanya selamat, bytecode yang betul dilaksanakan, dengan itu melindungi integriti dan keselamatan program.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa