Ich erstelle eine JavaFX
Anwendung, ich brauche die GUI mit anderen Code in der Klasse zu interagieren, aber die GUI und das andere Stück Code kann natürlich nicht laufen, ohne dass ich verschiedene Thread
s für sie weiterlaufen.Wie Multithread mit JavaFX
public class Client extends Application {
public static void main(String[] args){
launch(args);
}
@Override
public void start(Stage primaryStage){
primaryStage.setTitle("Hello world!");
Button btn = new Button();
btn.setText("Run Client");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
try{runClient();}catch (Exception e){System.out.println("Exception Occurred, Server is down.");}
}
});
StackPane root = new StackPane();
root.getChildren().addAll(btn);
primaryStage.setScene(new Scene(root, 500, 500));
primaryStage.show();
}
public void runClient() throws Exception {
String sentence;
String modSentence;
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + "\n");
modSentence = inFromServer.readLine();
System.out.println("From Server: " + modSentence);
clientSocket.close();
}
runClient()
ist der Client für den Server. Ich brauche die GUI, um mit dem Klienten zu kommunizieren, aber ich kann kein neues Thread
machen, um beide gleichzeitig laufen zu lassen.
Warum Sie kein neues Thema machen? –
Sie können so viele Threads erstellen, wie Sie möchten, aber vorzugsweise verwenden Sie einen 'ExecutorService'; die einzige Sache ist, dass alle GUI-Aufgaben auf dem GUI-Thread sein sollten (siehe Plattform # runLater) – fge
Kannst du mir zeigen, wie ich das machen würde? Ich weiß nicht genau, wo ich es machen würde. – ChrisEthanFox