JFRAME hängt sich auf

jcoffee

Mitglied
Hallo!

Ich bastle gerade an einem Programm zur Bildübertragung, leider gibt es noch einige Probleme mit der GUI und der Darstellung der Bilder.
Folgendes:

Ich rufe eine Klasse auf, die Bilder in einer Endlosschleife empfängt und auf ein JFrame kleistert.
Der Code stimmt, denn ohne die Endlosschleife wird 1 Bild angezeigt.
Wenn die Schleife jedoch "aktiv" ist, wird nichts angezeigt und das JFrame hängt sich auf.(Der X-Button nützt dann auch nichts mehr, auch wenn Exit on Close eingestellt ist)???:L
Codeausschnitt:

Aufruf der Klasse aus einer anderen JFrame Form:
Java:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        //überwachen des gewählten clients
        if(this.jList1.getSelectedIndex() == -1)
            JOptionPane.showMessageDialog(null, "Niemand da?", "Z100 - Service", JOptionPane.OK_CANCEL_OPTION);
        else{
            ClientControl help = new ClientControl(clientinfos.get(this.jList1.getSelectedIndex()*2), clientinfos.get(this.jList1.getSelectedIndex()*2+1));    
        }       
        
    }

Klasse in gekürzter Form
Java:
public class ClientControl extends WindowAdapter{
    
    
    public ClientControl(String clienttocontrol, String benutzername){
        try {
            
            this.haupt();
            
        } catch (IOException ex) {
            Logger.getLogger(ClientControl.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    
    private void haupt(){
        try {
            //Image img = Toolkit.getDefaultToolkit().getImage("icon.jpg");
            ClientControlFrame clientcontrolframe = new ClientControlFrame();
            clientcontrolframe.setTitle("Überwache: " + "->" + benutzername + "<-");
            clientcontrolframe.addWindowListener(this);
            clientcontrolframe.setVisible(true);
            
			while(true){}


        }
        catch (IOException ex) {
            Logger.getLogger(ClientControl.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

Eigenartig ist nur, dass wenn ich diese Klasse von der Main aus aufrufe(alles andere wegkommentiere), funktioniert es wunderbar, trotz while(true){}.
Es könnte folglich etwas mit dem Aufruf zu tun haben???

Vielen Dank,
Mfg.
 
Tja... du hast die wichtigen Stellen im Code weggemacht... da kann dir keiner sagen, was passiert. Es wäre wichtig, zu sehen, was innerhalb deiner Endlosschleife passiert und wie die deine Frame-Klase aussieht.
 
Durch die Schleife blockierst Du den EDT (EventDispatcherThread) und die GUI kann sich nicht aktualisieren. Die Schleife zum ständigen Laden der Bilder muss in einem separaten Thread laufen. (Strichwort: nebenläufige Programmierung)
 
Na deine Endlosschleife wird doch nie verlassen, und du verwendest ja auch kein Thread wo evtl. da eine Endlosschleife läuft.

Der einzige Thread ist der EDT (EventDispatcherThread). Google mal nach Threads.
 
Danke für die prompte Antwort!,

Beim testen habe ich nur diese Codestellen, die ausgeführt werden und trotzdem hängt es nach Aufruf.


Danke,
Mfg.
 
Direkt von der Main aus aufgerufen, wird das JFrame trotz Endlosschleife aktualisiert, mit dem WindowListener beende ich dann alles.
Hier wird aber nicht mal der aufgerufen:autsch:

Danke,
Mfg.
 
Meinte eigentlich Beispielcode nicht Deinen kompletten Code ;-)
Hab hier nur ein JDK 1.5 ohne GroupLayout, kann den Code weder ausführen nach kompilieren.
 
Uiuiuiui Leute, ich hätte erwähnen sollen das das Frame durch Netbeans automatisch generiert wurde^^.
Mit Netbeans gehts ohne Probleme auf(bei mir jedenfallsxD).

Problem ist eigentlich "nur" der Unterschied zwischen dem Instanzieren in der Main ODER in einer JFrame.

Mfg.
 
Zuletzt bearbeitet:

Zurück
Oben