2017-01-19 1 views
0
anrufen

Ich bin nicht wirklich ein Experte in Programmierung und ich beginne gerade zu lernen. Hier ist mein Problem. Ich habe versucht, diese class aufrufen, um den Server mit einem JButton zu starten, aber nach dem Drücken der Taste friert die Anwendung ein.JFrame Einfrieren, wenn ich eine Klasse mit JButton

Hier ist mein mouseClicked Ereignis

private void startbtnActionPerformed(java.awt.event.ActionEvent evt) {             
     new DisplayServer(80); 
} 
+0

Sie sicher, dass Sie nicht in einer Endlosschleife stecken. Ihr Code sollte eine bessere Einrückung haben. Ich las es auf halbem Weg und gab auf. – user3437460

+2

Wahrscheinlich wird am Ende des Ereignis-Threads eine Schleife ausgeführt, die alle GUI-Ereignisse und das Zeichnen blockiert (Sie benötigen einen separaten Thread). Es ist auch eine sehr schlechte Idee, 'neue DisplayServer (80);' mehr Dinge passieren als das Erstellen des Objekts. Sie sollten eine separate 'start()' -Methode haben, die Sie aufrufen, anstatt die Ausführung direkt vom Konstruktor aus zu starten. Ich empfehle alle möglichen grundlegenden Tutorials, bevor Sie anfangen, mit Swing zu arbeiten. – Kayaman

+0

@ user3437460, ich glaube, die GITHUB ist nicht OP-Code, schauen Sie das Commit-Datum;) – AxelH

Antwort

1

Ich nehme an, Sie den Event-Dispatcher-Thread-Block. Versuche es in einem neuen Thread auszuführen.

private void startbtnActionPerformed(java.awt.event.ActionEvent evt) {       
    new Thread(new Runnable() { 
     public void run() { 
      new DisplayServer(80); 
     } 
    }).start();      
} 

Für weitere Informationen lesen Sie den Artikel über Concurrency in Swing

+0

Sie können im Github sehen, dass der 'DisplayServer' Clients in dem aktuellen Thread' client = ss.accept(); 'in Zeile 27 wartet. Das ist also richtig. Wenn das ein schlechtes Design findet, sollte der Server den Thread selbst verwalten (meine Einstellungen) – AxelH

+0

Ja das funktioniert! Ich danke dir sehr! –

+0

@JarrelCostiniano Bitte lesen Sie den oben genannten Artikel, um zu verstehen, warum Sie Ihren Hörer auf diese Weise implementieren sollten –

Verwandte Themen