Swing Bild anzeigen und aktualisieren

Status
Nicht offen für weitere Antworten.

ArtooDetoo

Mitglied
Hallo,
ich möchte ein Bild aus dem Internet anzeigen und möglichst oft aktualisieren.
damit meine ich sowas:
Code:
while true {
  while lade neues_bild im hintergrund {
    zeige vorheriges bild;
  }
  tausche bilder aus;
}
je nach internetverbindung sollten die wechsel dann auch schneller stattfinden.
wie stelle ich sowas an?

Grüße,
R2
 
S

SlaterB

Gast
eine GUI malt die Bilder,
ein eigenständiger separater Thread liest und aktualisiert die Bilder und veranlasst evtl. ein repaint()
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
hmm, wie genau du Daten aus dem Internet lädst, habe ich gerade nicht vor Augen,
ich bezog mich auf den "AWT, Swing & SWT"-Teil der Frage ;)
 

Ebenius

Top Contributor
Mehrere Threads brauchst Du eigentlich nicht. Dieser Quelltext ist bestimmt nicht perfekt, aber er funktioniert. Daraus sollte sich also was machen lassen:
Java:
/* (@)JImageSlidePanel.java */

/* Copyright 2009 Sebastian Haufe

 * Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       [url]http://www.apache.org/licenses/LICENSE-2.0[/url]

 * Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License. */

package com.ebenius;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.ImageObserver;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.swing.*;

/**
 * TODO: Javadoc me!
 * 
 * @version $Revision$ as of $Date$
 * @author Sebastian Haufe
 * @since Playground-3.8
 */
public class JImageSlidePanel extends JPanel implements ActionListener {

  private int repeatInterval = 1000;
  private final List<Image> images = new ArrayList<Image>();
  private final Timer slideTimer = new Timer(1000, this);
  private final MediaTracker mediaTracker = new MediaTracker(this);
  private int currentImageIndex = -1;
  private Image currentImage;

  private final ImageObserver imgObs = new ImageObserver() {

    public boolean imageUpdate(
          Image img,
          int infoflags,
          int x,
          int y,
          int w,
          int h) {
      repaint();
      return false;
    }
  };

  public void setImages(Image... images) {
    final Image[] old = getImages();
    if (slideTimer.isRunning()) {
      slideTimer.stop();
    }
    for (Image image : this.images) {
      mediaTracker.removeImage(image);
    }
    this.images.clear();
    this.images.addAll(Arrays.asList(images));
    for (int i = 0; i < images.length; i++) {
      mediaTracker.addImage(images[i], i);
    }
    mediaTracker.checkAll(true);
    currentImageIndex = -1;
    currentImage = null;
    if (!slideTimer.isRunning() && images.length > 1) {
      slideTimer.setInitialDelay(repeatInterval);
      slideTimer.setDelay(repeatInterval);
      slideTimer.start();
    }
    firePropertyChange("images", old, images); //$NON-NLS-1$
    showNextImage();
  }

  public Image[] getImages() {
    return images.toArray(new Image[images.size()]);
  }

  public void actionPerformed(ActionEvent e) {
    showNextImage();
  }

  private int nextImageIndex() {
    final int count = images.size();
    for (int i = (currentImageIndex + 1) % count, j = 0; j < count; j++, i =
          (currentImageIndex + j + 1) % count) {
      if (mediaTracker.checkID(currentImageIndex)) {
        return i;
      }
    }

    return -1;
  }

  private void showNextImage() {
    final int imageIndex;
    if (images.isEmpty()) {
      currentImage = null;
      currentImageIndex = -1;
    } else if ((imageIndex = nextImageIndex()) != -1) {
      System.out.println("next image: " + imageIndex);
      currentImage = images.get(currentImageIndex = imageIndex);
    } else if (currentImageIndex == -1) {
      currentImage = images.get(currentImageIndex = 0);
    }
    repaint();
  }

  @Override
  protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    final Image img = currentImage;
    if (img != null) {
      final Insets insets = getInsets();
      g.drawImage(img, insets.left, insets.top, imgObs);
    }
  }

  /**
   * Test main method.
   * 
   * @param args ignored
   * @throws MalformedURLException
   */
  public static void main(String[] args) throws MalformedURLException {
    final JImageSlidePanel slidePanel = new JImageSlidePanel();
    final Toolkit tk = Toolkit.getDefaultToolkit();
    final String[] urlSpecs =
          {
            "http://upload.wikimedia.org/wikipedia/commons/d/d9/Barns_grand_tetons_YCbCr_separation.jpg",
            "http://upload.wikimedia.org/wikipedia/commons/3/3e/Phalaenopsis_JPEG.png",
            "http://www.java-forum.org/avatars/ebenius.gif?dateline=1235377736",
            "http://www.java-forum.org/avatars/sparrow.gif?dateline=1241546043",
            "http://www.java-forum.org/avatars/faetzminator.gif?dateline=1239030115", };
    final Image[] images = new Image[urlSpecs.length];
    for (int i = 0; i < urlSpecs.length; i++) {
      images[i] = tk.getImage(new URL(urlSpecs[i]));
    }
    slidePanel.setImages(images);

    final JPanel contentPane = new JPanel(new BorderLayout(6, 6));
    contentPane.add(slidePanel);

    final JFrame f = new JFrame("Test Frame: JImageSlidePanel"); //$NON-NLS-1$
    f.setContentPane(contentPane);
    f.setSize(640, 480);
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setVisible(true);
  }
}
Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JavaFX Bild zur ImageView in einem Kreis anzeigen. AWT, Swing, JavaFX & SWT 4
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
I Swing JLabel Bild für 1sec anzeigen lassen AWT, Swing, JavaFX & SWT 13
B Swing Bild von Webseite herunterladen, diese dann in JList anzeigen. AWT, Swing, JavaFX & SWT 1
U Bild innerhalb hatml code anzeigen AWT, Swing, JavaFX & SWT 5
A Bild über Imageviewer auf GUI anzeigen AWT, Swing, JavaFX & SWT 3
F Swing Zur Laufzeit Bild laden und auf JPanel anzeigen AWT, Swing, JavaFX & SWT 4
DARK_ZERATO2 Bild in GUI anzeigen AWT, Swing, JavaFX & SWT 4
D Bild in Frame anzeigen AWT, Swing, JavaFX & SWT 2
ARadauer Bild von Webseite in lokaler Swing Anwedung anzeigen AWT, Swing, JavaFX & SWT 4
K Bild in JTable anzeigen AWT, Swing, JavaFX & SWT 3
A Bild anzeigen AWT, Swing, JavaFX & SWT 2
P Bild Zeitverzögert anzeigen AWT, Swing, JavaFX & SWT 12
M Bild als Hintergrund anzeigen? AWT, Swing, JavaFX & SWT 12
G Bild anzeigen AWT, Swing, JavaFX & SWT 5
M Bild anzeigen AWT, Swing, JavaFX & SWT 2
R Graphics2D + Bild anzeigen. AWT, Swing, JavaFX & SWT 25
T Bild anzeigen AWT, Swing, JavaFX & SWT 2
C Bild in einem Vorschaufenster anzeigen lassen AWT, Swing, JavaFX & SWT 4
G Bild in einem JScrollPane anzeigen AWT, Swing, JavaFX & SWT 3
G Bild direkt aus Datenbank anzeigen lassen AWT, Swing, JavaFX & SWT 14
L Bild anzeigen AWT, Swing, JavaFX & SWT 3
H JavaFX Background-Bild wird in .exe nicht angezeigt AWT, Swing, JavaFX & SWT 6
M JavaFX Mandelbrot-bild noch nicht optimiert AWT, Swing, JavaFX & SWT 7
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
frager2345 Bild aus Dateien lesen und als Hintergrund verwenden AWT, Swing, JavaFX & SWT 2
T Bild in ein graphics füllen AWT, Swing, JavaFX & SWT 2
N imageIcon zeigt kein Bild an AWT, Swing, JavaFX & SWT 5
B Bild lädt nicht AWT, Swing, JavaFX & SWT 2
izoards Bild ausdrucken - PageFormat setzen geht nicht AWT, Swing, JavaFX & SWT 5
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
V JavaFX Bild leer und keine Fehlermeldung AWT, Swing, JavaFX & SWT 21
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
D JavaFX Größe des Bild an ImageView anpassen AWT, Swing, JavaFX & SWT 3
M Bewegtes Bild im BorderLayout.CENTER AWT, Swing, JavaFX & SWT 6
C Falschfarbenbild (lineare Grauwertspreizung)aus Grauwert-Bild erstellen AWT, Swing, JavaFX & SWT 15
C Kleineres Bild an bestimmte Koordinaten setzen AWT, Swing, JavaFX & SWT 6
S Bild neu skalieren - Bild in Bild speichern? AWT, Swing, JavaFX & SWT 6
N Bild Drehen AWT, Swing, JavaFX & SWT 1
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
J Bild von anderer Klasse will nicht laden AWT, Swing, JavaFX & SWT 1
T JFrame Bild einfügen AWT, Swing, JavaFX & SWT 9
M Combobox bild anklicken AWT, Swing, JavaFX & SWT 2
cool_brivk24 Swing ImageIcon lädt kein Bild AWT, Swing, JavaFX & SWT 12
L Bild nicht in der Mitte AWT, Swing, JavaFX & SWT 16
B JavaFX Bild um die eigene Achse drehen lassen AWT, Swing, JavaFX & SWT 0
J Swing Bild in Button AWT, Swing, JavaFX & SWT 11
T Image Loader lädt Bild nicht AWT, Swing, JavaFX & SWT 10
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
P Kein Bild wird angezeigt bei ImageIcon AWT, Swing, JavaFX & SWT 16
T JavaFX Bild in Tabellenzelle AWT, Swing, JavaFX & SWT 2
Ksanatos Swing Bild (.jpg) einlesen und per Button wechseln AWT, Swing, JavaFX & SWT 9
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
MaxG. Swing Bild Button AWT, Swing, JavaFX & SWT 7
P Swing Bild Skallieren AWT, Swing, JavaFX & SWT 1
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
A Swing Bild wird nicht mehr geladen AWT, Swing, JavaFX & SWT 4
A Swing Gemaltes Bild über saveDialog speichern unter AWT, Swing, JavaFX & SWT 15
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
S Bild mit ImageIcon auf GUI verkleinern AWT, Swing, JavaFX & SWT 3
T AWT Farben in einem Bild ändern AWT, Swing, JavaFX & SWT 8
I JFrame Bild strecken und auf Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 2
F Gezeichnetes als bild speichern AWT, Swing, JavaFX & SWT 4
B 2D-Grafik Bild farblich filtern AWT, Swing, JavaFX & SWT 2
B JavaFX ImageView neues Bild zuweisen AWT, Swing, JavaFX & SWT 19
A 2D-Grafik Bild wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 24
K Bild in JFrame AWT, Swing, JavaFX & SWT 2
S JavaFX Teil eines Bildes ausschneiden / als neues Bild nutzen AWT, Swing, JavaFX & SWT 8
B Swing Unterteiltes JFrame mit Bild in der Mitte AWT, Swing, JavaFX & SWT 4
I Applet BlueJ Applet - Bild mit if-Schleife zeichnen lassen AWT, Swing, JavaFX & SWT 16
Z Bildervorschau, MouseDragged das Bild verschieben AWT, Swing, JavaFX & SWT 1
M JavaFX Ein Bild ohne Rahmen fällt runter? AWT, Swing, JavaFX & SWT 2
G Anonyme Instanz von JXImageView erstellen und mit Bild initialisieren AWT, Swing, JavaFX & SWT 7
A JPanel Bild laden (Porblem mit Dateipfad) AWT, Swing, JavaFX & SWT 2
M JavaFX - Bild in Jar einbinden, sodass es auch außerhalb der IDE geladen wird. AWT, Swing, JavaFX & SWT 2
M Bild Beschreibung mit ImageIO speichern AWT, Swing, JavaFX & SWT 1
M "ImageIO.read()" liest Bild nicht richtig ein AWT, Swing, JavaFX & SWT 3
K Bild in Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
C GUI öfters durchlaufen und hinterher Bild speichern AWT, Swing, JavaFX & SWT 1
M AWT Farben in Bild ersetzen AWT, Swing, JavaFX & SWT 11
E JavaFX Bild einfügen AWT, Swing, JavaFX & SWT 6
G paintComponents zerstückelt Bild AWT, Swing, JavaFX & SWT 0
C 2D Grafik ein Bild soll permanent durchlaufen AWT, Swing, JavaFX & SWT 2
1 Textfield: jede Buchstabe ein Bild AWT, Swing, JavaFX & SWT 2
C Bild Koordinaten AWT, Swing, JavaFX & SWT 6
M Bild aus JLabel resizen und speichern AWT, Swing, JavaFX & SWT 0
M Bild in JPanel mit Maus einfügen AWT, Swing, JavaFX & SWT 0
B JPanel und png-Bild AWT, Swing, JavaFX & SWT 2
O 2D-Grafik Bild abgeschnitten nach Rotation mit Affine Transform und Hintergrund Schwarz AWT, Swing, JavaFX & SWT 8
A Swing Malprogramm Bild speichern? AWT, Swing, JavaFX & SWT 9
Y JavaFX Bild speichern und Pfad dazu abspeichern AWT, Swing, JavaFX & SWT 2
S Geladenes Bild wird nicht in JPanel angezeigt AWT, Swing, JavaFX & SWT 7
L 2D-Grafik Bild in Richtung Maus drehen AWT, Swing, JavaFX & SWT 18
C Bild in JFrame AWT, Swing, JavaFX & SWT 8
T AWT Bild laden und transparent zeichnen AWT, Swing, JavaFX & SWT 2
I SWT Bilder, bzw. ein einzelnes Bild AWT, Swing, JavaFX & SWT 6
L JavaFX: Bild in Image einlesen AWT, Swing, JavaFX & SWT 11
T Mit getSubimage ruckelt das Bild AWT, Swing, JavaFX & SWT 7
T Bild drehen ohne Resize AWT, Swing, JavaFX & SWT 3
A Bild in JLabel skalieren AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben