


Use SwingWorker to Update JLabel Repeatedly with Results of Long Running Task
This question addresses the need to periodically update a JLabel with results from a long-running task. To achieve this using Java, one should employ a combination of Swing Timer and SwingWorker.
Swing Timer for Repeated Tasks
A Swing Timer provides a convenient way to schedule recurring tasks in a GUI. In this case, we will use the Timer to execute the long-running task at regular intervals.
SwingWorker for Long Running Tasks
SwingWorker is a subclass of SwingUtilities that enables performing tasks in a separate thread, keeping the GUI responsive. Here, SwingWorker will execute the long-running task of pinging a server and updating the JLabel with the result.
Example Implementation
The following code demonstrates how to implement this approach:
<code class="java">import java.awt.event.*; import javax.swing.*; public class PingLabelUpdater { public static void main(String[] args) { final JLabel label = new JLabel("0000"); ActionListener timerListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new PingWorker().execute(); } }; Timer timer = new Timer(1000, timerListener); label.setFont(label.getFont().deriveFont(120f)); JOptionPane.showMessageDialog(null, label, "stackoverflow.com", JOptionPane.INFORMATION_MESSAGE); timer.stop(); } static class PingWorker extends SwingWorker { int time; @Override protected Object doInBackground() throws Exception { time = pingTime("stackoverflow.com"); return new Integer(time); } @Override protected void done() { label.setText("" + time); } } public static int pingTime(String hostnameOrIP) { Socket socket = null; long start = System.currentTimeMillis(); try { socket = new Socket(hostnameOrIP, 80); } catch (Exception e) { } finally { if (socket != null) { try { socket.close(); } catch (Exception e) {} } } long end = System.currentTimeMillis(); return (int) (end - start); } }</code>
In this example, the pingTime method establishes a connection to the specified server (stackoverflow.com) and measures the time it takes. The SwingWorker's doInBackground method performs the ping, and its done method updates the label with the ping time. The Timer is configured to execute the SwingWorker at an interval of 1000 milliseconds (1 second).
By combining Swing Timer and SwingWorker, we effectively update the JLabel with ping times without blocking the GUI thread, ensuring a responsive user interface while the task runs in the background.
The above is the detailed content of How to Use SwingWorker and Timer to Update JLabel with Results of Long Running Tasks in Java?. For more information, please follow other related articles on the PHP Chinese website!

This article analyzes the top four JavaScript frameworks (React, Angular, Vue, Svelte) in 2025, comparing their performance, scalability, and future prospects. While all remain dominant due to strong communities and ecosystems, their relative popul

The article discusses implementing multi-level caching in Java using Caffeine and Guava Cache to enhance application performance. It covers setup, integration, and performance benefits, along with configuration and eviction policy management best pra

This article addresses the CVE-2022-1471 vulnerability in SnakeYAML, a critical flaw allowing remote code execution. It details how upgrading Spring Boot applications to SnakeYAML 1.33 or later mitigates this risk, emphasizing that dependency updat

Java's classloading involves loading, linking, and initializing classes using a hierarchical system with Bootstrap, Extension, and Application classloaders. The parent delegation model ensures core classes are loaded first, affecting custom class loa

Node.js 20 significantly enhances performance via V8 engine improvements, notably faster garbage collection and I/O. New features include better WebAssembly support and refined debugging tools, boosting developer productivity and application speed.

Iceberg, an open table format for large analytical datasets, improves data lake performance and scalability. It addresses limitations of Parquet/ORC through internal metadata management, enabling efficient schema evolution, time travel, concurrent w

This article explores integrating functional programming into Java using lambda expressions, Streams API, method references, and Optional. It highlights benefits like improved code readability and maintainability through conciseness and immutability

This article explores methods for sharing data between Cucumber steps, comparing scenario context, global variables, argument passing, and data structures. It emphasizes best practices for maintainability, including concise context use, descriptive


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 Linux new version
SublimeText3 Linux latest version

SublimeText3 Chinese version
Chinese version, very easy to use

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Mac version
God-level code editing software (SublimeText3)
