Fenster lädt nicht

Nck256

Mitglied
Kurzer Einblick: Klickt man auf ein Button, lädt das Programm neue Daten aus dem Internet. Dabei öffnet sich ein Fenster, auf welchem Bitte Warten steht. Dieses Fenster lädt aber nicht korrekt. Heisst: Der Text bleibt weiß, bis es fertig geladen hat. Erst dann erscheint auch der Text.
 
G

Gast2

Gast
Dann läuft die ganze Aktion "lädt das Programm neue Daten aus dem Internet" vermutlich auf dem EDT.
Wenn der blockiert ist kann die GUI nichtmehr aktualisiert werden.
=> lange Berechnungen immer in nem extra thread ausführen
 

Nck256

Mitglied
Also mein Button-Aufruf sieht so aus:
Java:
Wait W = new Wait();
 W.setTitle("Bitte Warten...");
 W.setVisible(true);
 DLThread thread1 = new DLThread();
 thread1.start();
W.dispose;

Läuft, aber immer noch dasselbe Problem.
 

Nck256

Mitglied
[Java]class DLThread {
void start() {
try
{

final URL url = new URL("***");
final URLConnection conn = url.openConnection();
final InputStream is = new BufferedInputStream(conn.getInputStream());
final OutputStream os =
new BufferedOutputStream(new FileOutputStream("data\\newfile.jar"));
byte[] chunk = new byte[1024];
int chunkSize;
while ((chunkSize = is.read(chunk)) != -1) {
os.write(chunk, 0, chunkSize);
}
os.flush();
os.close();
is.close();
BufferedReader in = new BufferedReader(new FileReader("data\\version "));
String Version = in.readLine();
in.close();
JOptionPane.showMessageDialog(null, "Update der Programmdaten auf " + Version + "erfolgreich!", "Erfolgreich", JOptionPane.OK_OPTION);
}
catch (Exception f)
{
JOptionPane.showMessageDialog(null, "Update Fehlgeschlagen! Keine Internet-Verbindung?\r\n" + f, "Erfolgreich", JOptionPane.OK_OPTION);
}
}

}[/Java]

und

[Java]package biber.tool;

import java.awt.BorderLayout;
import javax.swing.GroupLayout;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.LayoutStyle;

import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit Cloud Garden (Java Resources) for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class Wait extends javax.swing.JFrame {
private JLabel WaitLable;

/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Wait inst = new Wait();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}

public Wait() {
super();
initGUI();
}

private void initGUI() {
try {
GroupLayout thisLayout = new GroupLayout((JComponent)getContentPane());
getContentPane().setLayout(thisLayout);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
{
WaitLable = new JLabel();
WaitLable.setText("Bitte warten ...");
}
thisLayout.setVerticalGroup(thisLayout.createSequentialGroup()
.addContainerGap(17, Short.MAX_VALUE)
.addComponent(WaitLable, GroupLayout.PREFERRED_SIZE, 34, GroupLayout.PREFERRED_SIZE)
.addContainerGap());
thisLayout.setHorizontalGroup(thisLayout.createSequentialGroup()
.addContainerGap(72, 72)
.addComponent(WaitLable, GroupLayout.PREFERRED_SIZE, 106, GroupLayout.PREFERRED_SIZE)
.addContainerGap(82, Short.MAX_VALUE));
pack();
this.setSize(276, 101);
} catch (Exception e) {
//add your error handling code here
e.printStackTrace();
}
}

}
[/code]
 
G

Gast2

Gast
Nur weil deine Klasse "Thread" im Namen hat ist das aber noch lange keiner ;)
Sobald du start() aufrufst ist der EDT blockiert.
Mache also aus der DLThread Klasse einen richtigen Thread, dann ist dein Problem gelöst.
dispose() rufst du dann auf sobald der Thread mit seiner Arbeit fertig ist.
 

thorstenthor

Bekanntes Mitglied
Nur weil deine Klasse "Thread" im Namen hat ist das aber noch lange keiner ;)
Sobald du start() aufrufst ist der EDT blockiert.
Mache also aus der DLThread Klasse einen richtigen Thread, dann ist dein Problem gelöst.
dispose() rufst du dann auf sobald der Thread mit seiner Arbeit fertig ist.

dispose direkt danach ist Unfug. Auf den Thread warten auch (Wozu dann der Thread?).

Was passiert bei new DLThread() wäre die goldfrage.
 

Nck256

Mitglied
Hey Danke, hat geklappt! Nur wie mache ich das mit dem Dispose? Wenn ich das am Ende des Threads mache kommt ne Fehlermeldung und wenn ich die Frame-Klasse importiere, gehts auch nicht. (Das ist die mit dem Button)

Und ich hätte noch ne andere Frage. Soll ich die noch hier reinposten oder nen neuen Thread aufmachen?
 
G

Gast2

Gast
Um das für den TO nochmal klar zu machen:
Java:
		final Wait wait = new Wait();
		wait.setTitle("Bitte Warten...");
		wait.setVisible(true);
		
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				Downloader dl = new Downloader(); // muss jetzt kein Thread mehr sein, läuft schon async zum EDT
				dl.startDownload();
				wait.dispose; // wartefenster schließen
			}
		});
So oder so ähnlich solltest du das machen.
Wichtig ist dass der Downloadvorgang nicht auf dem EDT läuft.

EDIT:
grade deinen Beitrag gelesen.
Dein Thread braucht ne referenz auf den Wait-dialog, dann kannst du darauf dispose() aufrufen.

Wenn die Frage hiermit zu tun hat dann poste die ruhig hier. Wenns Themenfremd is dann mach lieber nen neuen Thread auf.
 

Nck256

Mitglied
Ich tue mir grade ein wenig schwer mit der Refernez :D Denke mal ist einfach etwas zu spät.

Was ich noch fragen wollte: Wie mache ich eine Progressbar? Ich habe die Tuts nie wirklich verstanden :D
 
T

thorstennn

Gast
Seine bisherige Herangehensweise tut das doch auch, nur das durch das dispose() das Fenster schnell geschlossen ist. Etwas anderes als der DL soll doch nicht stattfinden oder??

Naja, es ist pät.
 

Nck256

Mitglied
Nein, nur der Download

Edit:
Ich weiß nur nicht wie ich die Progressbar in den Code richtig einbinde
 
Zuletzt bearbeitet:
G

Gast2

Gast
Seine bisherige Herangehensweise tut das doch auch, nur das durch das dispose() das Fenster schnell geschlossen ist. Etwas anderes als der DL soll doch nicht stattfinden oder??
Nein, sein Code oben hat den EDT blockiert. Das sollteste nicht machen..
 

Nck256

Mitglied
Der Button
[Java] final Wait wait = new Wait();
wait.setTitle("Bitte Warten...");
wait.setVisible(true);
SwingUtilities.invokeLater(new Runnable() {
@Override

public void run() {
Download dl = new Download();
dl.startDownload();
wait.dispose();[/code]

Wait-Fenster
[Java]
public class Wait extends javax.swing.JFrame {

/** Creates new form Wait */
public Wait() {
initComponents();
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jProgressBar1 = new javax.swing.JProgressBar();
jLabel1 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
setFocusable(false);
setFocusableWindowState(false);
setResizable(false);

jProgressBar1.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jProgressBar1.setIndeterminate(true);

jLabel1.setText("Bitte warten...");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(48, 48, 48)
.addComponent(jLabel1)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 25, Short.MAX_VALUE)
.addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

pack();
}// </editor-fold>

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
new Wait().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JProgressBar jProgressBar1;
// End of variables declaration
}
[/code]
 
G

Gast2

Gast
Und wenn du Wait startest bewegt sich die ProgressBar nicht?
Oder testest du das ganze nur mit deinem Downloader? Wenn sich dann nichts bewegt, dann blockierst du immernoch irgendwo den EDT.
 

Nck256

Mitglied
Hab einmal nur Wait gestartet und einmal das ganze Programm und den Downloadbutton gedrückt. Wenn ich nur Wait starte, bewegt sich die Progressbar. Beim Download allerdings nur, nachdem der Download fertig ist.
 
G

Gast2

Gast
Du hast bisher die Wait Klasse gezeigt, ok.
Zusätzlich noch nen unvollständigen schnipsel ohne irgendeinen Kontext.

Poste doch bitte die Komplette Methode in der der Wait Dialog aufgerufen wird.
 

Nck256

Mitglied
Java:
   private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        final Wait wait = new Wait();
        wait.setTitle("Bitte Warten...");
        wait.setVisible(true);
                SwingUtilities.invokeLater(new Runnable() {
            @Override
                    
            public void run() {
                Download dl = new Download(); 
                dl.Download();
                wait.dispose();
            }
[/Java]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
A Zusammenspiel javafx Fenster Allgemeine Java-Themen 1
M StdDraw-Fenster schliessen Allgemeine Java-Themen 1
D Klassen 2 Fenster in GUI Allgemeine Java-Themen 3
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
T Fenster schließen verhindern Allgemeine Java-Themen 13
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
K Interface Fenster mit Regler Allgemeine Java-Themen 2
S BMI Rechner mit eclipse Visual Editor (Seperates Fenster) Allgemeine Java-Themen 7
F Fenster schließen bei Klick auf Kreuz Allgemeine Java-Themen 14
P Herausfinden, ob ein Process ein Fenster hat Allgemeine Java-Themen 1
K Doppeltes Fenster Allgemeine Java-Themen 3
F DOS-Fenster unterdrücke? Allgemeine Java-Themen 0
A Anderes Fenster neu laden Allgemeine Java-Themen 16
B Geöffnetes Fenster verifizieren Allgemeine Java-Themen 2
T LookAndFeel Java Skinning Fenster Allgemeine Java-Themen 13
M CapsLock abfragen wenn Fenster wieder aktiviert wird Allgemeine Java-Themen 5
E Prüfen ob Fenster mit Namen offen ist Allgemeine Java-Themen 2
N verdeckte Fenster werden im Vordergrund gezeichnet Allgemeine Java-Themen 6
J Zugriff auf Poker-Client Fenster Allgemeine Java-Themen 14
A Erkennen welches Fenster bei windowDeactivated aktiviert wird? Allgemeine Java-Themen 2
S Frage für ein popup Fenster Allgemeine Java-Themen 4
J Swing Wird invisible, nicht-ref. Fenster vom GC entfernt? Allgemeine Java-Themen 11
Z Fenster vergrößern und verkleiern Allgemeine Java-Themen 14
S Fenster "verschwindet" nicht, trotz setVisible(false); Allgemeine Java-Themen 22
A Zeichen beim Eingeben in ein DOS-Fenster nicht anzeigen? Allgemeine Java-Themen 3
J X11 app in Java Fenster Allgemeine Java-Themen 4
R Von Java aus Browser Fenster oeffnen und Webseite ausgeben? Allgemeine Java-Themen 2
H Fenster focus Allgemeine Java-Themen 5
Escorter .jar Datei Classpath mitgeben ohne Dos Fenster Allgemeine Java-Themen 8
ARadauer Fenster suchen und Verschieben Allgemeine Java-Themen 6
G Keyboard Shortcut (bei nicht aktivem fenster) Allgemeine Java-Themen 2
Steev Screenshot vom Bereich behind dem aktuellen Fenster machen Allgemeine Java-Themen 24
D Welches Fenster ist im moment aktiv? Allgemeine Java-Themen 11
T Java Fenster Allgemeine Java-Themen 5
C Fenster öffnen Allgemeine Java-Themen 4
P Login- Fenster Allgemeine Java-Themen 11
B kleines modales transparents Fenster ohne rahmen und buttons Allgemeine Java-Themen 15
J text aus externem fenster lesen Allgemeine Java-Themen 3
F neues fenster Allgemeine Java-Themen 3
P JTabbedPane Fenster minimieren Allgemeine Java-Themen 15
K Warten auf die Eingabe aus Fenster.... Allgemeine Java-Themen 2
M neue Thread in neuem Fenster Allgemeine Java-Themen 3
MQue Fenster aufklappen Allgemeine Java-Themen 3
C Fenster blinken lassen Allgemeine Java-Themen 2
T Explorer-Fenster öffnen mit Java Allgemeine Java-Themen 9
S Windows Fenster finden Allgemeine Java-Themen 9
E Wie bekomme ich mein Image in das Fenster Allgemeine Java-Themen 2
E Mit Button ein Fenster öffnen Allgemeine Java-Themen 4
G Java Fenster öffnen nach Iconklick(desktop) (helppls) Allgemeine Java-Themen 3
G Das aktuelle Fenster drucken Allgemeine Java-Themen 13
G mehrere JPanels als Fenster benutzen Allgemeine Java-Themen 3
M ALT-F4 fenster schließen unterdrücken Allgemeine Java-Themen 2
S Swing - Problem mit Fenster-/Komponenten-Größe Allgemeine Java-Themen 3
M 2 verschiedene LookAndFeels in einem Fenster möglich? Allgemeine Java-Themen 6
G Leere Fenster (Keine Schrift, Reiter/ Buttons) bei Java Allgemeine Java-Themen 5
F Fenster friert ein! Allgemeine Java-Themen 2
K JAVA Fenster-Modi Allgemeine Java-Themen 5
S fenster umbenennen Allgemeine Java-Themen 4
J Fenster aufpopen lassen? Allgemeine Java-Themen 8
N Java Fenster schließen Allgemeine Java-Themen 2
B JNI: HWND von aufrufendem Fenster bekommen. Allgemeine Java-Themen 4
W Fenster (EXCEL) aktivieren Allgemeine Java-Themen 6
J Fenster mit paint Methode selbst zeichnen Allgemeine Java-Themen 3
G Fenster verbinden (docken) Allgemeine Java-Themen 4
G Fenster/Frame schließen Allgemeine Java-Themen 16
L Windows-Fenster "Arbeitsplatz" anzeigen Allgemeine Java-Themen 13
G Auf KeyEvent reagieren, wenn das Fenster nicht aktiv ist Allgemeine Java-Themen 8
C alle Fenster bleiben grau Allgemeine Java-Themen 4
G Fenster durch eigenen Button minimieren Allgemeine Java-Themen 6
Tobero Download .jar von github lädt kaputte Datei runter Allgemeine Java-Themen 3
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
G JPanel lädt nicht?! Allgemeine Java-Themen 20
@SupressWarnings() Multilanguaging lädt immer falsch Allgemeine Java-Themen 5
Cromewell JavaFX FXML-File lädt unter Ubuntu nicht Allgemeine Java-Themen 7
M Wie lädt Eclipse die Javadoc Allgemeine Java-Themen 14
G JList lädt gesamten Datenbestand Allgemeine Java-Themen 5
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
kodela Textfeld nicht rechteckig Allgemeine Java-Themen 10
G Doppelklick auf Javaprogramm klapt nicht Allgemeine Java-Themen 1
W Timer terminiert nicht Allgemeine Java-Themen 5
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
W Überflüssige Deklaration vermeiden...war da nicht mal was? Allgemeine Java-Themen 3
N lwjgl kann textureSampler nicht finden Allgemeine Java-Themen 4
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
T .Jar kann man nicht ausführen Allgemeine Java-Themen 18
P JDK nicht installiert in Net Object Fusion Allgemeine Java-Themen 7
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
N Regex schlägt nicht an Allgemeine Java-Themen 10
Y Wieso krieg ich die Unit Tests nicht hin Allgemeine Java-Themen 55
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
kodela String kann nicht zu Pfad konvertiert werden Allgemeine Java-Themen 16
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
OnDemand ApacheCommon FTP Client zuckt nicht Allgemeine Java-Themen 3
T JavaPoet - (noch) nicht existente Typen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben