SwingUtilities.invokeLater: Melaksanakan Kod pada Event Dispatch Thread
SwingUtilities.invokeLater ialah kaedah dalam perpustakaan Swing Java yang menjadualkan Runnable kepada dilaksanakan pada slot seterusnya yang tersedia dalam urutan penghantaran acara.
Bagaimanakah invokeLater berfungsi?
Apabila anda memanggil SwingUtilities.invokeLater, anda memberikannya objek Runnable. Objek ini mengandungi kod yang anda mahu laksanakan pada utas penghantaran acara. Urutan penghantaran acara ialah urutan yang mengendalikan semua acara GUI, seperti klik butang dan pergerakan tetikus.
Mengapa menggunakan invokeLater?
Anda harus menggunakan invokeLater apabila anda memerlukan untuk membuat perubahan pada GUI daripada benang yang berbeza. Sebagai contoh, jika anda mempunyai tugasan yang sudah lama dijalankan yang ingin anda lakukan dalam urutan latar belakang, anda harus menggunakan invokeLater untuk mengemas kini GUI apabila tugasan selesai.
Apakah perbezaan antara invokeLater dan hanya memanggil kod pada urutan penghantaran acara?
Jika anda hanya memanggil kod pada urutan penghantaran acara, ia akan dilaksanakan serta-merta. Ini boleh menyebabkan masalah jika urutan penghantaran acara sedang sibuk mengendalikan acara lain. Dengan menggunakan invokeLater, anda boleh menjadualkan kod untuk dilaksanakan kemudian, apabila urutan penghantaran acara mempunyai masa untuk mengendalikannya.
Contoh penggunaan
Berikut ialah contoh cara menggunakan SwingUtilities.invokeLater:
<code class="java">import javax.swing.JButton; import javax.swing.SwingUtilities; public class Example { public static void main(String[] args) { SwingUtilities.invokeLater(() -> { JButton button = new JButton("Click me!"); }); } }</code>
Dalam contoh ini, kami menggunakan invokeLater untuk mencipta butang baharu dan menambahkannya pada GUI. Kerana kami menggunakan invokeLater, butang akan dibuat dan ditambahkan pada GUI pada urutan penghantaran acara, yang memastikan GUI dikemas kini dengan betul.
Atas ialah kandungan terperinci SwingUtilities.invokeLater: Bila dan Mengapa Anda Perlu Menggunakannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!