So zeigen Sie ein Bild an, ohne das Formular einzufrieren
Wenn Sie in Ihrem Code auf die Schaltfläche klicken, blockiert der Bildladevorgang das Ereignis Versandthread, was dazu führt, dass das Formular vorübergehend einfriert. Um dies zu vermeiden, können Sie einen separaten Thread verwenden, um das Laden des Bildes im Hintergrund durchzuführen.
Lösung mit javax.swing.SwingWorker
Der javax.swing.SwingWorker Mit der Klasse können Sie eine Aufgabe in einem separaten Thread ausführen und gleichzeitig die Benutzeroberfläche (UI) der Aufgabe aktualisieren. So können Sie damit Ihr Problem lösen:
In Ihrer „client_Trackbus“-Klasse:
SwingWorker<Image, Void> imageLoader = new SwingWorker<Image, Void>() { @Override protected Image doInBackground() throws Exception { // Load the image from URL in a separate thread URL imageURL = new URL("http://www.huddletogether.com/projects/lightbox2/images/image-2.jpg"); Image image = Toolkit.getDefaultToolkit().createImage(imageURL); return image; } @Override protected void done() { try { // Display the loaded image on the panel ImageIcon icon = new ImageIcon(get()); label.setIcon(icon); jPanel1.add(label); // Resize the panel to fit the image jPanel1.setSize(label.getPreferredSize()); // Update the form getContentPane().add(jPanel1); revalidate(); repaint(); } catch (Exception ex) { // Handle any exceptions here } } }; // Start the image loading task in the background imageLoader.execute();
Dieser Code erstellt einen SwingWorker, der in einem separaten Thread ausgeführt wird . Die doInBackground()-Methode lädt das Bild von der URL, ohne den Event-Dispatch-Thread zu blockieren. Wenn das Bild geladen ist, wird die Methode done() im Event-Dispatch-Thread aufgerufen, wo das Bild angezeigt und das Formular aktualisiert wird. Durch diesen Ansatz bleibt das Formular reaktionsfähig, während das Bild geladen wird.
Das obige ist der detaillierte Inhalt vonWie lade ich ein Bild, ohne Ihr Java Swing-Formular einzufrieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!