Java Progressbar & Download Probleme

JavaGamer

Bekanntes Mitglied
Hallo,

ich habe mal wieder drei Probleme, wovon zwei etwas mit der GUI und der dazugehörigen ProgressBar zu tun haben und eines indirekt.

Also zu 1: Die Progressbar gibt komische Werte zurück, wie z.B. -44000 und zum Schluss dann 100.
zu 2: Die Progressbar wird nur angezeigt wenn ich die darauffolgende GUI entferne/deaktivere, da sich sonst schon die nächste GUI rendert, bevor man die DownloadGUI überhaupt sehen kann... Zudem mit entfernter nächsten GUI verbleibt man so lange bei Gui 1 bis die Progressbar bei 100% angekommen ist, erst dann kommt man weiter zu Gui 2 (DownloadGUI).
zu 3: Die zu downloadene Datei wird nicht gespeichert.

Hier der dazugehörige Log und Code:
Code:
[INFO] Initialize Installer
[DEBUG] temp-String: http://download1891.mediafire.com/eokga8n019hg/ry715imp6810kd6/Primeval+Forest+%28MC+1.6.4%29.zip
[DEBUG] Clientlist: http://download1891.mediafire.com/eokga8n019hg/ry715imp6810kd6/Primeval+Forest+%28MC+1.6.4%29.zip
[DEBUG] C:\Users\Benutzer\AppData\Roaming\.minecraft\mods
[DEBUG] /eokga8n019hg/ry715imp6810kd6/Primeval+Forest+%28MC+1.6.4%29.zip
[DEBUG] Primeval+Forest+%28MC+1.6.4%29.zip
[DEBUG] Primeval Forest (MC 1.6.4).zip
[DEBUG] The Value (-11600) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10100) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10500) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-9700) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10100) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-9700) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-4900) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-11400) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-11500) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-6000) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-11000) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-3400) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-7700) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-11600) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-3900) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-11400) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10800) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-9500) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10100) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10800) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-3200) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-11700) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-11200) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-6200) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-3200) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10500) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10500) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-11400) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-11400) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10500) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-3200) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-9500) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10500) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10100) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10800) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-11400) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-8700) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-8300) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-5800) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-11800) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10800) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-10100) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-9700) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-4100) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (-4400) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (100) for the progress bar 'Dateifortschritt' was successfully set.
[DEBUG] The Value (1) for the progress bar 'Gesamtfortschritt' was successfully set.

InstallationHandler.java
Java:
	/**
	 * @param downloadList The list of all download links
	 * @param destination The destination file to save the files in. 
	 * 
	 * @throws MalformedURLException wrong URL
	 * 
	 * @since 1.0
	 */
	public static void downloadFiles(final ArrayList<String> downloadList, final File destination)
	{
		DownloadGui.setProgressMinMax(DownloadGui.getAllBar(), 0, downloadList.size());
		DownloadGui.setProgressMinMax(DownloadGui.getCurrentBar(), 0, 100);
		
		for(int i = 0; i < downloadList.size(); i++)
		{
			try 
			{
				downloadFile(new URL(downloadList.get(i).toString()), destination);
			} 
			catch (MalformedURLException e)
			{
				Logger.log2(Level.FATAL, e, downloadList.get(i).toString(), "InstallationHandler - MalformedURLException");
			}
			
			if(DownloadGui.getCurrentBar().getValue() == DownloadGui.getCurrentBar().getMaximum())
				DownloadGui.setProgress(DownloadGui.getAllBar(), i + 1);
		}
		
		//if(DownloadGui.getAllBar().getValue() == DownloadGui.getAllBar().getMaximum())
			//new FinishedGui();
	}
	
	/**
	 * Downloads the file from the given url and saves the file in the file-destination.
	 * 
	 * @param websiteFile The URL from that the file should be downloaded.
	 * @param destination The destination file to save the file in.
	 * 
     *  @since 1.0
	 */
	private static void downloadFile(URL websiteFile, File destination)
	{
		BufferedInputStream in = null;
		FileOutputStream fout = null;
		BufferedOutputStream bout = null;
		URLConnection connection = null;
		int minValue = 0;
		int maxValue = 0;
		try 
		{
			connection = (URLConnection) websiteFile.openConnection();
			
			maxValue = connection.getContentLength();
			
			Logger.log(Level.DEBUG, StartUpGui.targetDir.getAbsolutePath());
			Logger.log(Level.DEBUG, websiteFile.getFile());
			
			String fileName = FileNameUtils.getName(websiteFile);
			
			System.out.println(fileName);
			
			in = new BufferedInputStream(connection.getInputStream());
			fout = new FileOutputStream(StartUpGui.targetDir + fileName);
			bout = new BufferedOutputStream(fout, 1024);
			
			DownloadGui.setLabel(fileName);
			forge = new File(fileName);
			
			final byte data[] = new byte[1024];
			int cout;
			while((cout = in.read(data, 0, 1024)) != -1)
			{
				fout.write(data, 0, cout);
				minValue = in.read();
				DownloadGui.setProgress(DownloadGui.getCurrentBar(), (minValue * 100 ) / maxValue);
			}
			
			in.close();
			fout.close();
			bout.close();
		} 
		catch (MalformedURLException e)
		{
			e.printStackTrace();
		} 
		catch (IOException e) 
		{
			e.printStackTrace();
		}
	}

DownloadGui.java
Java:
	public DownloadGui()
	{
		this.panel.removeAll();
		
		setup();
		add(this.panel);
		
		this.panel.validate();
		this.panel.repaint();
		
		new InstallationHandler();
	}

Ich hoffe ihr könnt mir dabei helfen.
JavaGamer
 

Joose

Top Contributor
Deine "while"-Schleife welches die Datei läuft im selben Thread wie deine GUI!
Daher kann sich deine GUI nicht updaten. Hierzu solltest du dir den Event Dispatcher Thread, SwingWorker und ähnliches anschauen.

Leider zeigst du uns nicht den Code wo die Werte für die ProgressBar berechnet werden. Daher kann man auch schwer sagen warum die Wert falsch sind.

Und ich finde dieses Konstrukt immer noch sehr eigen:
Deine Klasse DownloadGui erstellt ein Objekt von InstallationHandler (vom dem die Referenz nicht gespeichert wird) und 2 statische Methoden dieses "InstallationHandler" greifen auf die DownloadGui zu.
Für mich schaut es so aus als ob aus der Not heraus die UI Elemente etc static gemacht wurden.
--> schaue dir die Grundlagen für OOP nochmals an.
 

JavaGamer

Bekanntes Mitglied
Deine "while"-Schleife welches die Datei läuft im selben Thread wie deine GUI!
Daher kann sich deine GUI nicht updaten. Hierzu solltest du dir den Event Dispatcher Thread, SwingWorker und ähnliches anschauen.

Leider zeigst du uns nicht den Code wo die Werte für die ProgressBar berechnet werden. Daher kann man auch schwer sagen warum die Wert falsch sind.

Und ich finde dieses Konstrukt immer noch sehr eigen:
Deine Klasse DownloadGui erstellt ein Objekt von InstallationHandler (vom dem die Referenz nicht gespeichert wird) und 2 statische Methoden dieses "InstallationHandler" greifen auf die DownloadGui zu.
Für mich schaut es so aus als ob aus der Not heraus die UI Elemente etc static gemacht wurden.
--> schaue dir die Grundlagen für OOP nochmals an.
Aber eigentlich wird doch die GUI erst gezeichnet und dann nur bei der ProgressBar während des Downloads die Werte durch die neuen ersetzt,

Der Code wo die ProgressBar aktualisiert wird ist dabei:
Java:
DownloadGui.setProgress(DownloadGui.getCurrentBar(), (minValue * 100 ) / maxValue);
Zu finden in der while-Schleife des InstallationHandlers.

Und was ist ein Konstrukt? (wenn ich Konstrukt bei google eingebe kommt da nur irgendeine Erklärung raus die kein Mensch versteht....)
Also eigentlich ruft meine Klasse DownloadGui die Klasse InstallationHandler nur auf, wo dann ein paar Vorgänge welche im Konstruktor ablaufen ausgeführt werden und dann die entsprechenden Methoden als Ergebnis dieser Vorgänge ausgefüht werden. Und warum sollte ich InstallationHandler installer = new InstallationHandler() machen... Dann müsste ich ja gleich noch @SuppressWarnings("unused") drüber schreiben, da installer nie genutzt wird, außer um die Klasse aufzurufen.
Und was meinst du mit:
und 2 statische Methoden dieses "InstallationHandler" greifen auf die
DownloadGui zu.
???

Und eigentlich finde ich das schon sehr OOP mäßig programmiert. Ist zumindest meiner Meinung nach auch besser programmiert als das Kinderbuch zu Java (nun ja, ein Buch ab 12) womit ich die grundlegenen Dinge gelernt habe, aber auch nicht weiter als bis zum Kapitel OOP gekommen bin, da ich sehr sehr ungern Bücher lese und den Inhalt dieser meist schneller vergesse...
 
Zuletzt bearbeitet:

Joose

Top Contributor
Aber eigentlich wird doch die GUI erst gezeichnet und dann nur bei der ProgressBar während des Downloads die Werte durch die neuen ersetzt,

Ja und bevor deine UI gezeichnet werden kann passiert schon der 1.Download.
Und bei jedem setzen eines neuen Wertes für die ProgressBar muss dieses Element neu gezeichnet werden -> was durch die while-Schleife nicht möglich ist.

Suche in Google mal: "java gui blockiert" ... da findest du viele Seiten die das Thema von einfrierenden GUIs behandlen, aber auch warum eine UI erst gar nicht angezeigt wird usw.


Der Code wo die ProgressBar aktualisiert wird ist dabei:
Java:
DownloadGui.setProgress(DownloadGui.getCurrentBar(), (minValue * 100 ) / maxValue);

Dann würde ich dort einfach kontrollieren was du für Werte auf "minValue" und "maxValue" stehen hast.
-> Debuggen!


Also eigentlich ruft meine Klasse DownloadGui die Klasse InstallationHandler nur auf, wo dann ein paar Vorgänge welche im Konstruktor ablaufen ausgeführt werden und dann die entsprechenden Methoden als Ergebnis dieser Vorgänge ausgefüht werden.

Ein UI sollte eigentlich nur zum Anzeigen von Daten dienen.
Der Vorgang sollte durch einen ActionHandler oder ähnliches gestartet werden.
Aber das driftet in zu viel Offtopic ab.

Und warum sollte ich InstallationHandler installer = new InstallationHandler() machen... Dann müsste ich ja gleich noch @SuppressWarnings("unused") drüber schreiben, da installer nie genutzt wird, außer um die Klasse aufzurufen.

Ja, alleine diese Mischung von UI und Businesslogik zeigt von keiner schönen Programmierung. Aber wie oben schon gesagt zu viel Offtopic.
 

JavaGamer

Bekanntes Mitglied
Also zu Event Dispatcher Thread habe ich nichts gefunden. Nun ja, nichts stimmt auch nicht ganz, ich habe zwar Englische Erklärungen gefunden aber diese nicht verstanden. Zu SwingWorker habe ich zwar etwas gefunden, aber verstanden wiederrum nicht... (http://wiki.**********.net/wiki/SwingWorker)

Bei "java gui blockiert" komme ich auch nicht wirklich weiter, habe dort nur etwas mit asyncExec und Thread die andere Thread blockieren gefunden.

Ja, alleine diese Mischung von UI und Businesslogik zeigt von keiner schönen Programmierung
?

WAs genau ist eigentlich der Unterschied zwischen GUI und UI?

Ja und bevor deine UI gezeichnet werden kann passiert schon der 1.Download.
Aber ich rufe doch den Installationhandler erst auf nachdem alles gezeichnet wurde.

Hier der Debug von min und maxValue:
Code:
min: 69
max: -1
min: 117
max: -1
min: 115
max: -1
min: 50
max: -1
min: 97
max: -1
min: 108
max: -1
min: 111
max: -1
min: 114
max: -1
min: 115
max: -1
min: 111
max: -1
min: 80
max: -1
min: 102
max: -1
min: 120
max: -1
min: 118
max: -1
min: 101
max: -1
min: 110
max: -1
min: 116
max: -1
min: 34
max: -1
min: 114
max: -1
min: 114
max: -1
min: 95
max: -1
min: 101
max: -1
min: 32
max: -1
min: 105
max: -1
min: 105
max: -1
min: 109
max: -1
min: 118
max: -1
min: 110
max: -1
min: 120
max: -1
min: 114
max: -1
min: 101
max: -1
min: 105
max: -1
min: 34
max: -1
min: 121
max: -1
min: 117
max: -1
min: 101
max: -1
min: 47
max: -1
min: 87
max: -1
min: 111
max: -1
min: 109
max: -1
min: 116
max: -1
min: 104
max: -1
min: 84
max: -1
min: 125
max: -1
min: -1
max: -1
 
Zuletzt bearbeitet:

Joose

Top Contributor
Also zu Event Dispatcher Thread habe ich nichts gefunden. Nun ja, nichts stimmt auch nicht ganz, ich habe zwar Englische Erklärungen gefunden aber diese nicht verstanden.

Dann musst du uns zeigen was du gefunden hast und was du daran nich5 verstanden hast.
PS: English muss man als Programmierer nicht gut können aber eben gut genug um Tutorials und Dokumentationen zu lesen


WAs genau ist eigentlich der Unterschied zwischen GUI und UI?

GUI = Graphisches User Interface
UI = User Interface

Ein UI muss nicht grafisch sein. Eine Konsolen Anwendung kann auch als UI dienen.

Aber ich rufe doch den Installationhandler erst auf nachdem alles gezeichnet wurde.

Das zeichnen passiert aber erst dann wenn der Thread kann und wenn er laut Code von dir noch das und das machen soll kann er nicht zeichnen usw.

Hier der Debug von min und maxValue:
Code:
min: 69
max: -1
min: 117
max: -1
min: 115
max: -1
min: 50
max: -1
min: 97
max: -1
min: 108
max: -1
min: 111
max: -1
min: 114
max: -1
min: 115
max: -1
min: 111
max: -1
min: 80
max: -1
min: 102
max: -1
min: 120
max: -1
min: 118
max: -1
min: 101
max: -1
min: 110
max: -1
min: 116
max: -1
min: 34
max: -1
min: 114
max: -1
min: 114
max: -1
min: 95
max: -1
min: 101
max: -1
min: 32
max: -1
min: 105
max: -1
min: 105
max: -1
min: 109
max: -1
min: 118
max: -1
min: 110
max: -1
min: 120
max: -1
min: 114
max: -1
min: 101
max: -1
min: 105
max: -1
min: 34
max: -1
min: 121
max: -1
min: 117
max: -1
min: 101
max: -1
min: 47
max: -1
min: 87
max: -1
min: 111
max: -1
min: 109
max: -1
min: 116
max: -1
min: 104
max: -1
min: 84
max: -1
min: 125
max: -1
min: -1
max: -1

"in.read ()" gint dir zurück wieviele bytes gerade gelesen wurden. Sprich du musst min diesen Wert immer zu min dazu addiere
 

JavaGamer

Bekanntes Mitglied
Also gefunden habe ich das hier: https://stackoverflow.com/questions/7217013/java-event-dispatching-thread-explanation
Was ich daran nicht verstehe: Wie genau Event Dispatcher Thread arbeitet, was genau dieser tut und halt wie ich das in mein Programm einbauen kann und woher nehme ich invokeLater, muss ja in irgendeiner Java-Klasse untergebracht sein.

Englisch kann ich auch, zumindest für kleinere Gespräche, wenns dann speziell in Richtung programmieren geht oder komplexere Gespräche oder Englische Filme, dann hören meine Englischkenntnise sehr schnell auf. (da mir meist Vokabeln fehlen...die wir in der Schule allerdings nie gelernt haben in 10 Jahren.... oder halt auch, da ich nicht weiß wie ich mich jetzt im Englischen Ausdrücken soll....)

Das passiert wenn ich inRead zu minValue addiere:
Code:
min: 116
max: -1
min: 217
max: -1
min: 321
max: -1
min: 394
max: -1
min: 444
max: -1
min: 541
max: -1
min: 649
max: -1
min: 760
max: -1
min: 876
max: -1
min: 910
max: -1
min: 1025
max: -1
min: 1136
max: -1
min: 1216
max: -1
min: 1318
max: -1
min: 1438
max: -1
min: 1556
max: -1
min: 1588
max: -1
min: 1690
max: -1
min: 1800
max: -1
min: 1916
max: -1
min: 2015
max: -1
min: 2120
max: -1
min: 2217
max: -1
min: 2312
max: -1
min: 2413
max: -1
min: 2445
max: -1
min: 2550
max: -1
min: 2655
max: -1
min: 2752
max: -1
min: 2814
max: -1
min: 2855
max: -1
min: 2964
max: -1
min: 3000
max: -1
min: 3101
max: -1
min: 3205
max: -1
min: 3266
max: -1
min: 3387
max: -1
min: 3504
max: -1
min: 3536
max: -1
min: 3568
max: -1
min: 3615
max: -1
min: 3702
max: -1
min: 3810
max: -1
min: 3926
max: -1
min: 4030
max: -1
min: 4114
max: -1
min: 4239
max: -1
min: 4238
max: -1

Die Progressbar bleibt eiskalt bei 0% und warum auch immer ist maxValue immer -1.
Java:
	private static void downloadFile(URL websiteFile, File destination)
	{
		BufferedInputStream in = null;
		FileOutputStream fout = null;
		BufferedOutputStream bout = null;
		URLConnection connection = null;
		int minValue = 0;
		int maxValue = 0;
		try 
		{
			connection = (URLConnection) websiteFile.openConnection();
			
			maxValue = connection.getContentLength();
			
			Logger.log(Level.DEBUG, StartUpGui.targetDir.getAbsolutePath());
			Logger.log(Level.DEBUG, websiteFile.getFile());
			
			String fileName = FileNameUtils.getName(websiteFile);
			
			System.out.println(fileName);
			
			in = new BufferedInputStream(connection.getInputStream());
			fout = new FileOutputStream(StartUpGui.targetDir + fileName);
			bout = new BufferedOutputStream(fout, 1024);
			
			DownloadGui.setLabel(fileName);
			forge = new File(fileName);
			
			final byte data[] = new byte[1024];
			int cout;
			while((cout = in.read(data, 0, 1024)) != -1)
			{
				fout.write(data, 0, cout);
				minValue = minValue + in.read();
				System.out.println("min: " + minValue);
				System.out.println("max: " + maxValue);
				DownloadGui.setProgress(DownloadGui.getCurrentBar(), (minValue * 100 ) / maxValue);
			}
			
			in.close();
			fout.close();
			bout.close();
		} 
		catch (MalformedURLException e)
		{
			e.printStackTrace();
		} 
		catch (IOException e) 
		{
			e.printStackTrace();
		}
	}
Zudem downloadet bzw. speichert der auch garnichts...Der Ordner wo die Datein drin gespeichert werden sollen bleibt einfach leer.
Wenn ich den Downloadlink ändere, dann kommt das bei raus, aber gespeichert wird immer noch nichts:
Code:
min: 0
max: 204226
min: 228
max: 204226
min: 361
max: 204226
min: 604
max: 204226
min: 833
max: 204226
min: 977
max: 204226
min: 1195
max: 204226
min: 1300
max: 204226
min: 1546
max: 204226
min: 1547
max: 204226
min: 1769
max: 204226
min: 1911
max: 204226
min: 1916
max: 204226
min: 1954
max: 204226
min: 2184
max: 204226
min: 2439
max: 204226
min: 2618
max: 204226
min: 2765
max: 204226
min: 2791
max: 204226
min: 2916
max: 204226
min: 2943
max: 204226
min: 3183
max: 204226
min: 3259
max: 204226
min: 3374
max: 204226
min: 3522
max: 204226
min: 3560
max: 204226
min: 3683
max: 204226
min: 3937
max: 204226
min: 3986
max: 204226
min: 4007
max: 204226
min: 4123
max: 204226
min: 4285
max: 204226
min: 4498
max: 204226
min: 4596
max: 204226
min: 4759
max: 204226
min: 4946
max: 204226
min: 4960
max: 204226
min: 5190
max: 204226
min: 5212
max: 204226
min: 5449
max: 204226
min: 5608
max: 204226
min: 5680
max: 204226
min: 5745
max: 204226
min: 5858
max: 204226
min: 5929
max: 204226
min: 6035
max: 204226
min: 6234
max: 204226
min: 6364
max: 204226
min: 6385
max: 204226
min: 6458
max: 204226
min: 6665
max: 204226
min: 6694
max: 204226
min: 6846
max: 204226
min: 6952
max: 204226
min: 6967
max: 204226
min: 7041
max: 204226
min: 7163
max: 204226
min: 7172
max: 204226
min: 7333
max: 204226
min: 7461
max: 204226
min: 7543
max: 204226
min: 7618
max: 204226
min: 7738
max: 204226
min: 7908
max: 204226
min: 8122
max: 204226
min: 8270
max: 204226
min: 8499
max: 204226
min: 8595
max: 204226
min: 8742
max: 204226
min: 8983
max: 204226
min: 9223
max: 204226
min: 9475
max: 204226
min: 9714
max: 204226
min: 9878
max: 204226
min: 10045
max: 204226
min: 10239
max: 204226
min: 10345
max: 204226
min: 10385
max: 204226
min: 10556
max: 204226
min: 10811
max: 204226
min: 10889
max: 204226
min: 10996
max: 204226
min: 11097
max: 204226
min: 11114
max: 204226
min: 11342
max: 204226
min: 11430
max: 204226
min: 11521
max: 204226
min: 11656
max: 204226
min: 11879
max: 204226
min: 12060
max: 204226
min: 12313
max: 204226
min: 12483
max: 204226
min: 12553
max: 204226
min: 12727
max: 204226
min: 12795
max: 204226
min: 12871
max: 204226
min: 12885
max: 204226
min: 13132
max: 204226
min: 13245
max: 204226
min: 13278
max: 204226
min: 13357
max: 204226
min: 13490
max: 204226
min: 13535
max: 204226
min: 13720
max: 204226
min: 13821
max: 204226
min: 13923
max: 204226
min: 14118
max: 204226
min: 14324
max: 204226
min: 14331
max: 204226
min: 14354
max: 204226
min: 14487
max: 204226
min: 14543
max: 204226
min: 14781
max: 204226
min: 15031
max: 204226
min: 15284
max: 204226
min: 15331
max: 204226
min: 15467
max: 204226
min: 15596
max: 204226
min: 15700
max: 204226
min: 15934
max: 204226
min: 16082
max: 204226
min: 16307
max: 204226
min: 16409
max: 204226
min: 16500
max: 204226
min: 16647
max: 204226
min: 16738
max: 204226
min: 16764
max: 204226
min: 16877
max: 204226
min: 16911
max: 204226
min: 17037
max: 204226
min: 17245
max: 204226
min: 17402
max: 204226
min: 17614
max: 204226
min: 17849
max: 204226
min: 17890
max: 204226
min: 18103
max: 204226
min: 18188
max: 204226
min: 18261
max: 204226
min: 18333
max: 204226
min: 18551
max: 204226
min: 18552
max: 204226
min: 18798
max: 204226
min: 18933
max: 204226
min: 19155
max: 204226
min: 19166
max: 204226
min: 19196
max: 204226
min: 19402
max: 204226
min: 19539
max: 204226
min: 19636
max: 204226
min: 19852
max: 204226
min: 20085
max: 204226
min: 20159
max: 204226
min: 20305
max: 204226
min: 20495
max: 204226
min: 20495
max: 204226
min: 20613
max: 204226
min: 20713
max: 204226
min: 20874
max: 204226
min: 21010
max: 204226
min: 21046
max: 204226
min: 21250
max: 204226
min: 21302
max: 204226
min: 21405
max: 204226
min: 21601
max: 204226
min: 21624
max: 204226
min: 21855
max: 204226
min: 21938
max: 204226
min: 21958
max: 204226
min: 22034
max: 204226
min: 22251
max: 204226
min: 22399
max: 204226
min: 22521
max: 204226
min: 22681
max: 204226
min: 22901
max: 204226
min: 23051
max: 204226
min: 23086
max: 204226
min: 23151
max: 204226
min: 23191
max: 204226
min: 23300
max: 204226
min: 23347
max: 204226
min: 23404
max: 204226
min: 23514
max: 204226
min: 23644
max: 204226
min: 23685
max: 204226
min: 23849
max: 204226
min: 24063
max: 204226
min: 24189
max: 204226
min: 24380
max: 204226
min: 24396
max: 204226
min: 24396
max: 204226
min: 24486
max: 204226
min: 24682
max: 204226
min: 24885
max: 204226
min: 25043
max: 204226
min: 25181
max: 204226
min: 25435
max: 204226
min: 25510
max: 204226
min: 25674
max: 204226
min: 25857
max: 204226
min: 26034
max: 204226
min: 26108
max: 204226
min: 26231
max: 204226
min: 26298
max: 204226
min: 26325
max: 204226
min: 26365
max: 204226
min: 26591
max: 204226
min: 26663
max: 204226
min: 26701
max: 204226
min: 26931
max: 204226
min: 27088
max: 204226
min: 27250
max: 204226
min: 27344
max: 204226
min: 27552
max: 204226
min: 27558
max: 204226
min: 27725
max: 204226
min: 27824
max: 204226
min: 27861
max: 204226
min: 27986
max: 204226
min: 28027
max: 204226
min: 28090
max: 204226
min: 28281
max: 204226
min: 28307
max: 204226
min: 28355
max: 204226
min: 28449
max: 204226
min: 28449
max: 204226
min: 28512
max: 204226
min: 28514
max: 204226
min: 28630
max: 204226
min: 28632
max: 204226
min: 28632
max: 204226
min: 28643
max: 204226
min: 28645
max: 204226
min: 28645
max: 204226
min: 28852
max: 204226
min: 28963
max: 204226
min: 29062
max: 204226
min: 29062
max: 204226
min: 29062
max: 204226
min: 29109
max: 204226
min: 29210
max: 204226
min: 29210
max: 204226
min: 29319
max: 204226
min: 29429
max: 204226
min: 29509
max: 204226
min: 29617
max: 204226
min: 29718
max: 204226
min: 29717
max: 204226
Danach, also bei 14% hört der einfach auf :(
Scheint mir auch so, als wenn Mediafire den Downloadlink ständig ändert.... (musste den jetzt im Tool schon 3 mal ändern....)
 

Joose

Top Contributor
Also gefunden habe ich das hier: https://stackoverflow.com/questions/7217013/java-event-dispatching-thread-explanation
Was ich daran nicht verstehe: Wie genau Event Dispatcher Thread arbeitet, was genau dieser tut und halt wie ich das in mein Programm einbauen kann und woher nehme ich invokeLater, muss ja in irgendeiner Java-Klasse untergebracht sein.

Hier ein Auszug aus der Erklärung des Event Dispatcher Thread (von deinem gefunden Link):
The EventDispatching thread is a special thread that is managed by the AWT. Basically it is a thread that runs in an infinite loop processing event. The java.awt.EventQueue.invokeLater method is a special way to provide some code that will run on the event queue. Writing a ui framework that is safe in a multithreading environment is very difficult so the AWT authors decided that they would only allow operations on GUI objects to occur on a single special thread. All event handlers will execute on this thread and all code that modifies the gui should also operate on this thread.

(Wenn ich nochmal fragen würde was genau daran unverständlich ist drehen wir uns ewig im Kreis)
Der EDT ist ein eigener Thread der "endlos" läuft und alle Events die von der GUI geworfen werden behandelt. Damit aber das Ganze in einer Multithreaded Umgebung auch ohne Probleme läuft (und sicher) sollten auch Änderungen an der UI nur über den EDT gemacht werden.
Dafür kann man unter anderem "invokeLater" einsetzen.

Wie man jetzt "invokeLater" usw. einsetzt kann man leicht im Internet finden.

Die Progressbar bleibt eiskalt bei 0% und warum auch immer ist maxValue immer -1.

Zudem downloadet bzw. speichert der auch garnichts...Der Ordner wo die Datein drin gespeichert werden sollen bleibt einfach leer.

.......
Wenn ich den Downloadlink ändere, dann kommt das bei raus, aber gespeichert wird immer noch nichts:
Code:
min: 0
max: 204226
min: 228
max: 204226
min: 361
max: 204226
.....
min: 29718
max: 204226
min: 29717
max: 204226
Danach, also bei 14% hört der einfach auf :(
Scheint mir auch so, als wenn Mediafire den Downloadlink ständig ändert.... (musste den jetzt im Tool schon 3 mal ändern....)

Ja überlege was für ein Wert rauskommt wenn "maxValue" -1 ist -> dann kann die ProgressBar nur bei 0% bleiben.
Kontrolliere wo der Wert für "maxValue" gesetzt wird und wie du ihn setzt (woher kommt der Wert, was gibt diese Methode zurück, wann gibt diese -1 zurück usw.)

Wenn du uns Debugangaben postest wie diese "min: .... max: ....." dann reduziere es doch bitte auf das wichtigste. (Keiner will sich meherere hundert Zeilen von deinem Debug anschauen wo kein Unterschied besteht außer den Werten).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
E Java und integrierte Grafikkarten Allgemeine Java-Themen 18
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
A Java unter Win 10 Allgemeine Java-Themen 1
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
T Java Robot Class - Bot Allgemeine Java-Themen 3
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
berserkerdq2 Java sql Allgemeine Java-Themen 15
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
LimDul XSD To Java - Überschreiben von Assoziationen Allgemeine Java-Themen 1
Aartiyadav Comparisons and Swapa in Bubble-sort Java Allgemeine Java-Themen 6
KonradN Java 18 Allgemeine Java-Themen 8
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
M Verständnisfrage java.util.TimerTask Allgemeine Java-Themen 2
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
O Newton Algorithmus Java Allgemeine Java-Themen 1
P Java Quellen finden Allgemeine Java-Themen 3
M Java Analyse/ SWOT-Analyse Allgemeine Java-Themen 13
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
M Warum hat Java dieses und jenes nicht... Allgemeine Java-Themen 8
E Java .exe Datei mit args starten Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben