Applet - loading...

Status
Nicht offen für weitere Antworten.

lumo

Top Contributor
Edit: err falsche sprache *g*

hallo,

habe ein applet geschrieben das selbst nru ca 46kb groß ist, allerdings lädt es noch andere daten von meiner website ~250kb und ich würde, statt der standard-animation lieber einen fortschritt dem user präsentieren auf dem gezeigt wird, was gerade geladen wird...

gibts dazu eine möglichkeit?

danke im voraus!

original post:

hi,

is there a possibility to stop an applet from showing the default loading applet animation?
i would like to show up what is going to get loaded...
as in my applet (the applet itself only got 46kb) but the stuff the applet needs to run is about 250kb therefore the applet shows the loading animation only because the applet is loading the stuff in the background....

any ideas?

thanks in advance
 

Stefoan

Mitglied
Sind die 250 k Daten nicht schneller geladen, als das Applet zum Aufbau braucht? Ok, nimm einfach eine JProgressBar und füge diese deinem Applet, anstatt der Animation, hinzu. How To

Allerdings ist die Anzeige des Fortschritts nicht so ganz trivial, da Du die Größe der Daten und deren Durchsatz/s ermitteln musst. Dazu kannst Du z.B. einen Stream aufmachen und die empfangenen Datenpaketgrößen zusammenzählen.

Falls das zu aufwendig ist kannst Du auch "indeterminate mode" probieren, ist allerdings auch nur so eine "Knight Rider"-Animation :).

Gruß Stefan
 

lumo

Top Contributor
nein, das applet ist sehr schnell aufgebaut (bzw wartet er beim aufbau, bis eben meine daten geladen sind)

wie man eine progressbar verwendet ist mir klar. hab schon nen downloadanager mit fortschrittsanzeige, downloadgeschwindigkeitsanzeige und estimated time calculation geschrieben... allerdings nicht als applet ;)

ich will eigentlich nur das applet aufgebaut haben und DANN die daten laden um sie anzuzeigen. aber wenn das beim applet im init() steht klappt das nicht...
 

Stefoan

Mitglied
Wusste ich nicht... ;) Init() wird vor start() aufgerufen, daher musst Du das erst starten() und dann das Laden in einem Thread starten, wie Michael... gesagt hat. Vielleicht so:

Java:
	@Override
	public void start() {
		Thread preloader = new Thread(){
			@Override
			public void run() {
				//...
			}
		};
		preloader.start();
	}
 

lumo

Top Contributor
HEUREKA, ich habs!

ich brauche dazu allerdings keinen eigenen thread. <-- braucht man doch


alles was man machen muss ist... im init() den loading bereich anzeigen, und sobald start() aufgerufen wird, den loading-bereich wieder entfernen und das applet mit geladenem zeugs darstellen....
<-- err man braucht nen observer, wenn man nen thread hat, sonst wird zwar geladen, und das applet schön aufgebaut, nur sind die daten dann noch nicht fix geladen ;)
erfolgreicher code im nächsten post...
 
Zuletzt bearbeitet:

lumo

Top Contributor
err, ich muss mich korrigieren, ich brauch den thread doch...
dazu hab ich noch nen observer implementiert und das ganze sieht dann so aus:
(lauffähiges beispiel, nicht ganz formschön, aber vielleicht hilfts jemandem :D)

dieses applet simuliert einen ladevorgang für 15 dateien...

LoadingApplet.java
Code:
import java.awt.BorderLayout;

public class LoadingApplet extends JApplet implements IObserver {

	private static final long serialVersionUID = 1L;
	public static final int STEPS = 15;;
	private LoadingPanel loading;

	public LoadingPanel getLoadingPanel() {
		return loading;
	}

	public LoadingApplet() {
	}

	@Override
	public void start() {
		System.out.println("start");
		// loading done, now remove the loading... stuff and show real stuff
	}

	@Override
	public void init() {
		System.out.println("init");
		loading = new LoadingPanel();
		loading.setProgressSteps(STEPS);
		loading.addObserver(this);
		add(loading, BorderLayout.CENTER);
		Thread preloader = new Thread() {
			@Override
			public void run() {
				Random r = new Random();
				r.nextInt(1000);
				// simulate loading of 15 files!
				for (int i = 0; i < STEPS; i++) {
					try {
						Thread.sleep(r.nextInt(1000));
						System.out.println("Simluated one file load.");
						loading.setCurrentLoading("image"+r.nextInt(1000)+".jpg");
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		};
		preloader.start();
		repaint();
	}
	
	@Override
	public void update(IObservable o) {
		remove(loading);
		add(new JLabel("LOADING DONE"), BorderLayout.CENTER);
		validate();
		repaint();
	}
}

LoadingPanel.java
Code:
import java.awt.Dimension;
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingConstants;

public class LoadingPanel extends JPanel implements IObservable {
	private ArrayList<IObserver> observers = new ArrayList<IObserver>();

	private static final long serialVersionUID = 1L;

	private JProgressBar progressBar;
	private JLabel lblLoading;
	private JLabel lblItemProgress;
	private JLabel lblItemName;

	/**
	 * Create the panel.
	 */
	public LoadingPanel() {
		setLayout(new GridLayout(0, 1, 0, 0));
		{
			lblLoading = new JLabel("Loading...");
			lblLoading.setHorizontalAlignment(SwingConstants.CENTER);
			add(lblLoading);
		}
		{
			lblItemProgress = new JLabel("Item[?/?]");
			lblItemProgress.setHorizontalAlignment(SwingConstants.CENTER);
			add(lblItemProgress);
		}
		{
			lblItemName = new JLabel("New label");
			lblItemName.setHorizontalAlignment(SwingConstants.CENTER);
			add(lblItemName);
		}
		{
			progressBar = new JProgressBar();
			progressBar.setPreferredSize(new Dimension(150, 21));
			add(progressBar);
		}
	}

	public void setProgressSteps(int maxSteps) {
		progressBar.setMaximum(maxSteps);
		lblItemProgress.setText("Item [" + progressBar.getValue() + "/"
				+ progressBar.getMaximum() + "]");
	}

	public void increaseProgress() {
		progressBar.setValue(progressBar.getValue() + 1);
		lblItemProgress.setText("Item [" + progressBar.getValue() + "/"
				+ progressBar.getMaximum() + "]");
		if (finished())
			notifyObservers();
	}

	public boolean finished() {
		return progressBar.getValue() == progressBar.getMaximum();
	}
	
	public void setCurrentLoading(String item) {
		lblItemName.setText(item);
		increaseProgress();
	}

	// OBSERVER STUFF

	public void doSomething() {
		notifyObservers();
	}

	@SuppressWarnings("unchecked")
	private void notifyObservers() {
		// loop through and notify each observer
		Iterator i = observers.iterator();
		while (i.hasNext()) {
			IObserver o = (IObserver) i.next();
			o.update((IObservable) this);
		}
	}

	@Override
	public void addObserver(IObserver o) {
		observers.add(o);
	}

	@Override
	public void removeObserver(IObserver o) {
		observers.remove(o);
	}
}

IObserver.java
Code:
public interface IObserver {
	void update(IObservable o);
}

IObservable.java
Code:
package tt.at.lumo.net.langames.seatpickerV2;

public interface IObservable {

	void addObserver(IObserver o);

	void removeObserver(IObserver o);
}
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java-Applet zur Mittelwertberechnung Java Basics - Anfänger-Themen 3
D Java Applet wird nicht im Browser angezeigt Java Basics - Anfänger-Themen 6
M bestehendes Projekt als Applet speichern Java Basics - Anfänger-Themen 2
S Erste Schritte Java - Applet - Rechteck ständig versetzen Java Basics - Anfänger-Themen 14
A Applet Plot für atan erstellen Java Basics - Anfänger-Themen 1
S Erste Schritte Java Applet lässt sich im Browser nicht öffnen Java Basics - Anfänger-Themen 9
K JDK installieren displays java applet für MAC Java Basics - Anfänger-Themen 10
S Zeichen von abgerundeten Rechtecken auf einem Applet Java Basics - Anfänger-Themen 5
J Einfache einbindung eines Bildes in ein Applet Java Basics - Anfänger-Themen 4
S Klassen Applet extern aufrufen Java Basics - Anfänger-Themen 1
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
C Applet Probleme Java Basics - Anfänger-Themen 1
A Compiler-Fehler Problem beim einbinden der applet Klasse Java Basics - Anfänger-Themen 2
M Erste Schritte Java Applet - HTML Seiten auslesen und in Access Datenbank schreiben? Java Basics - Anfänger-Themen 15
G Applet in ein JSP einbinden Java Basics - Anfänger-Themen 1
C Java-Applet Fehler "NoClassDefFoundError"? Java Basics - Anfänger-Themen 1
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
C Kalender in Applet einfügen Java Basics - Anfänger-Themen 0
J JavaScript findet Applet Methode nicht Java Basics - Anfänger-Themen 2
J Punkte im Java-Applet verbinden Java Basics - Anfänger-Themen 4
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
V Text aus einer .txt dynamisch ins applet einpassen Java Basics - Anfänger-Themen 0
K Applet funz. im Browser nicht Java Basics - Anfänger-Themen 11
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
thet1983 Erste Schritte <param> Tag in Applet Java Basics - Anfänger-Themen 4
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
G Signiertes Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 1
Y Applet: Verschlüsselung Java Basics - Anfänger-Themen 3
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
F signiertes Applet fkt. nicht bei lokalem Aufruf Java Basics - Anfänger-Themen 2
K Frage zu Applet Java Basics - Anfänger-Themen 3
V While Schleife für ganzes Applet Java Basics - Anfänger-Themen 6
P Applet Histogramm Java Basics - Anfänger-Themen 6
H 27 Kreise Zeichnen Java Applet Java Basics - Anfänger-Themen 2
G Java Applet aus Eclipse heraus testen? Java Basics - Anfänger-Themen 6
S Applet findet Klasse nicht Java Basics - Anfänger-Themen 7
R Java Applet mit Mausklick ansprechen Java Basics - Anfänger-Themen 3
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
S Applet-Objekt ist vor dem Hintergrund Java Basics - Anfänger-Themen 11
F Problem mit Applet Java Basics - Anfänger-Themen 5
A Applet mit Object-Tags einbinden. Java Basics - Anfänger-Themen 3
S Erste Schritte Fenster wechsel im Applet Java Basics - Anfänger-Themen 7
S Applet Deployment Java Basics - Anfänger-Themen 2
X Applet Fehler: java.lang.reflect.InvocationTargetException Java Basics - Anfänger-Themen 45
H Applet - main()-Methode Java Basics - Anfänger-Themen 4
K Applet wird nicht im Browser und Appletviewer angezeigt Java Basics - Anfänger-Themen 5
L Applet : keine Recht für Zugriff auf Clipboard (trotz Zertifikat) Java Basics - Anfänger-Themen 4
N Erste Schritte Applet zeichnet Bild nicht Java Basics - Anfänger-Themen 10
H Klassen in Eclipse stellt es im Ausgabe-Applet nicht dar Java Basics - Anfänger-Themen 5
L Applet soll Html-File öffnen Java Basics - Anfänger-Themen 2
L NetBeans Applet in html Java Basics - Anfänger-Themen 4
Dogge Start:Applet nicht Initialisiert Java Basics - Anfänger-Themen 11
D Applet beenden Java Basics - Anfänger-Themen 7
Dogge Problem mit paint(Graphics g) im Applet Java Basics - Anfänger-Themen 13
M RSA Applet ohne Cipher Java Basics - Anfänger-Themen 15
B String verschlüsseln - Applet - ohne BASE64 Java Basics - Anfänger-Themen 7
S Methode in Applet starten Java Basics - Anfänger-Themen 2
M AWT Applet - Button aus anderer Klasse abfragen Java Basics - Anfänger-Themen 4
W Probleme mit Java Applet Java Basics - Anfänger-Themen 5
M Applet kann in Browser nicht ausgeführt werden Java Basics - Anfänger-Themen 4
L Applet: Laden unterbricht den Browserfokus (scrollen) Java Basics - Anfänger-Themen 2
Z Applet startet nicht bei Domain mit Umlaut Java Basics - Anfänger-Themen 2
B Externe Libraries fuer Applet ... Pfad eingeben? Java Basics - Anfänger-Themen 23
Helgon ClassNotFound Applet Java Basics - Anfänger-Themen 6
U Applet Signiert und trotzdem Fehlermeldung Java Basics - Anfänger-Themen 18
E Schach in Java-Applet <No main classes found> Java Basics - Anfänger-Themen 5
S Applet Java Basics - Anfänger-Themen 2
S [Applet] Objekte von init bei paint benutzen Java Basics - Anfänger-Themen 9
E Applet wird nicht angezeigt Java Basics - Anfänger-Themen 11
P Problem- Java Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 9
B Applet - Laden eines Java-Fensters bricht ab Java Basics - Anfänger-Themen 6
N Import Problem, Applet will nicht Java Basics - Anfänger-Themen 6
M Applet Eclipse Vollbild Java Basics - Anfänger-Themen 3
K Befehl per Shell an Java-Applet JAR übergeben Java Basics - Anfänger-Themen 16
I Java Applet Java Basics - Anfänger-Themen 8
D Java Applet Dateien auf Server auslesen? Java Basics - Anfänger-Themen 8
L Referenced Libraries korrekt in Java Applet einbinden.. Java Basics - Anfänger-Themen 2
KBJ Java Applet Gästebuch Java Basics - Anfänger-Themen 12
T Java Applet braucht mehrere Minuten zu Start Java Basics - Anfänger-Themen 5
U Applet wird nicht angezeigt Java Basics - Anfänger-Themen 2
J J-Applet, Frage Java Basics - Anfänger-Themen 19
J Applet farblich gestalten Java Basics - Anfänger-Themen 5
M Applet lokaler Festplattenzugriff Java Basics - Anfänger-Themen 25
X Applet - Client/Server Java Basics - Anfänger-Themen 2
M Applet ist nur graues Feld Java Basics - Anfänger-Themen 12
O webserver für Applet und php Java Basics - Anfänger-Themen 7
J Fehlermeldung: Applet nicht initialisiert Java Basics - Anfänger-Themen 24
C Java Applet Probleme Java Basics - Anfänger-Themen 4
S Probleme mit Java 3D Tutorial (Applet) Java Basics - Anfänger-Themen 7
S Input/Output Problem mit dateizugriff innerhalb der .jar (Applet) Java Basics - Anfänger-Themen 2
M Applet + BilderDownload Java Basics - Anfänger-Themen 36
O Applet Wetterticker Java Basics - Anfänger-Themen 17
W KeyListener auf Applet mit Runnable Java Basics - Anfänger-Themen 4
M Bild in Applet darstellen Java Basics - Anfänger-Themen 6
W Applet funktiniert nur in Eclipse Java Basics - Anfänger-Themen 2
S Erste Schritte Machbarkeit: Applet oder GUI-Applikation? Java Basics - Anfänger-Themen 3
R Daten von Applet an Website Java Basics - Anfänger-Themen 4
A Linie Zeichnen Applet mit Double Wert Java Basics - Anfänger-Themen 3
O (von Applet) daten an Server übergeben Java Basics - Anfänger-Themen 4

Ähnliche Java Themen


Oben