2017-10-10 3 views
0

Ich habe JavaFX-Anwendung mit zwei Szenen. Wenn der Benutzer Nick füllt und auf die Schaltfläche klickt, sollte er die Szenen wechseln und sich dann mit dem Server verbinden. Aber aus irgendeinem unbekannten Grund verbindet es sich erst mit dem Server und ändert Szenen nur, wenn es vom Server antwortet. Aber es sollte zuerst die beiden sichtbaren Anweisungen setzen und erst dann das Vysilac erstellen oder liege ich falsch?JavaFX überspringt Anweisungen beim Verbinden mit Server

Hier ist mein Code - Button-Methode (Spusteni und Cekani sind Namen der Szenen), Vysilac ist Klasse, die die Verbindung behandelt.

Vysilac vysilac; 

@FXML 
private void pripojSe() throws IOException 
{ 
    String nick = textNick.getText(); 
    if (nick != null && !nick.equals("")) 
    { 
    spusteni.setVisible(false); 
    cekani.setVisible(true); 
    vysilac = new Vysilac(nick); 
    } 
} 


public class Vysilac 
{ 
private String nick = "Chyba - nick neexistuje"; 
private Socket socket; 
private ObjectOutputStream output; 
private ObjectInputStream input; 

    Vysilac(String nick) throws IOException 
    { 
     this.nick = nick; 
     socket = new Socket("localhost",33); 
     output = new ObjectOutputStream(socket.getOutputStream()); 
     input = new ObjectInputStream(socket.getInputStream()); 
     //System.out.println(nick); 
     output.writeObject(nick); 
    } 
} 

Dank für jede Hilfe oder Ratschläge :)

Antwort

1

Sie müssen lang laufende Operationen auf einem separaten Thread ausgeführt werden. Andernfalls blockieren Sie den JavaFX-Anwendungs-Thread, der für die Aktualisierung der Benutzeroberfläche verantwortlich ist. In diesem Fall würde ich einen Task verwenden, um die Arbeit zu erledigen:

+0

Danke das half mir :) –

Verwandte Themen