


Kemas kini JLabel dengan Keputusan Tugasan Jangka Panjang
Masalah:
Anda berhasrat untuk cipta program yang terus ping pelayan dan mengemas kini hasil ping dalam JLabel.
Pendekatan Awal:
Percubaan pertama anda melibatkan memanggil kaedah setPing() sekali dalam acara formWindowOpened(). Walaupun ini berjaya, ia hanya melaksanakan tugas sekali sahaja.
Pendekatan Kedua:
Usaha seterusnya memperkenalkan gelung tak terhingga dalam formWindowOpened(). Walau bagaimanapun, pendekatan ini gagal melaksanakan kaedah setPing() sekali pun.
Penyelesaian menggunakan Swing Timer dan SwingWorker:
Untuk menangani isu ini, pertimbangkan untuk menggunakan Swing Timer untuk menjadualkan pelaksanaan tugas yang sudah lama berjalan (dalam kes ini, kaedah setPing()) pada selang masa yang telah ditetapkan. Pendekatan ini memanfaatkan SwingWorker untuk melaksanakan kaedah setPing() pada urutan yang berasingan, mendayakan responsif dan mengelakkan pembekuan GUI.
Berikut ialah coretan kod yang melaksanakan pendekatan ini:
<code class="java">import java.awt.event.*; import javax.swing.*; import java.net.Socket; public class LabelUpdateUsingTimer { static String hostnameOrIP = "stackoverflow.com"; int delay = 5000; JLabel label = new JLabel("0000"); LabelUpdateUsingTimer() { label.setFont(label.getFont().deriveFont(120f)); ActionListener timerListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new PingWorker().execute(); } }; Timer timer = new Timer(delay, timerListener); timer.start(); JOptionPane.showMessageDialog( null, label, hostnameOrIP, JOptionPane.INFORMATION_MESSAGE); timer.stop(); } class PingWorker extends SwingWorker { int time; @Override protected Object doInBackground() throws Exception { time = pingTime(); return new Integer(time); } @Override protected void done() { label.setText("" + time); } }; public static int pingTime() { Socket socket = null; long start = System.currentTimeMillis(); try { socket = new Socket(hostnameOrIP, 80); } catch (Exception weTried) { } finally { if (socket != null) { try { socket.close(); } catch (Exception weTried) {} } } long end = System.currentTimeMillis(); return (int) (end - start); } public static void main(String[] args) { Runnable r = new Runnable() { @Override public void run() { new LabelUpdateUsingTimer(); } }; SwingUtilities.invokeLater(r); } }</code>
Dalam ini kod:
- Swing Timer berulang kali menjadualkan pelaksanaan PingWorker.
- SwingWorker melaksanakan setPing() di latar belakang, mengemas kini GUI apabila selesai.
Pendekatan ini memastikan bahawa tugasan yang berjalan lama tidak menyekat urutan GUI, mengekalkan responsif semasa mengemas kini JLabel dengan hasil ping pada selang masa yang tetap.
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini JLabel Secara Berterusan dengan Keputusan Tugasan Berjangka Panjang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Dreamweaver CS6
Alat pembangunan web visual

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.