Advertisement
Guest User

Untitled

a guest
May 26th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.52 KB | None | 0 0
  1. package client;
  2.  
  3. import javafx.animation.AnimationTimer;
  4. import javafx.application.Application;
  5. import javafx.geometry.Insets;
  6. import javafx.scene.Group;
  7. import javafx.scene.Scene;
  8. import javafx.scene.control.Button;
  9. import javafx.scene.control.TextArea;
  10. import javafx.scene.control.TextField;
  11. import javafx.scene.layout.GridPane;
  12. import javafx.scene.layout.HBox;
  13. import javafx.scene.layout.VBox;
  14. import javafx.scene.paint.Color;
  15. import javafx.stage.Stage;
  16.  
  17. import java.io.*;
  18. import java.net.Socket;
  19.  
  20.  
  21.  
  22. public class Client extends Application {
  23.  
  24.     private AnimationTimer startingBox;
  25.  
  26.     private static Socket clientSocket; //сокет для общения
  27.     private static BufferedReader reader; // нам нужен ридер читающий с консоли, иначе как
  28.     // мы узнаем что хочет сказать клиент?
  29.     private static BufferedReader in; // поток чтения из сокета
  30.     private static BufferedWriter out; // поток записи в сокет
  31.  
  32.     @Override
  33.     public void start(Stage stage) throws Exception {
  34.         stage.setTitle("chat client");
  35.  
  36.         Group group = new Group();
  37.  
  38.         GridPane grid = new GridPane();
  39.         grid.setPadding(new Insets(50, 10, 10, 85));
  40.         grid.setVgap(10);
  41.         grid.setHgap(5);
  42.  
  43.         final TextField nickname = new TextField();
  44.         nickname.setPromptText("Enter your nickname.");
  45.         nickname.setPrefColumnCount(10);
  46.         GridPane.setConstraints(nickname, 0, 0);
  47.         grid.getChildren().add(nickname);
  48.  
  49.  
  50.         final TextField connectionAddress = new TextField();
  51.         connectionAddress.setPromptText("Enter server's IP.");
  52.         GridPane.setConstraints(connectionAddress, 0, 1);
  53.         grid.getChildren().add(connectionAddress);
  54.  
  55.         Button submit = new Button("Start");
  56.         GridPane.setConstraints(submit, 0, 2);
  57.         grid.getChildren().add(submit);
  58.  
  59.         group.getChildren().add(grid);
  60.         Scene startingScene = new Scene(group, 350, 200, Color.CADETBLUE);
  61.         stage.setScene(startingScene);
  62.  
  63.         submit.setOnMouseClicked(
  64.                 event->{
  65.                     if (nickname.getText() != null && !nickname.getText().isEmpty()) {
  66.                         //System.out.println("testing button!");
  67.                         try {
  68.  
  69.                             if (connectionAddress.getText().isEmpty()) {
  70.                                 clientSocket = new Socket("localhost", 3443);
  71.                                 System.out.println("connected by localhost");
  72.                             }
  73.                             else{
  74.                                 clientSocket = new Socket(connectionAddress.getText(), 3443);
  75.                                 System.out.println("connected by " + connectionAddress.getText());
  76.                             }
  77.  
  78.                             in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
  79.                             out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
  80.  
  81.                             out.write(nickname.getText() + "\n");
  82.                             out.flush();
  83.  
  84.                             String isOk = in.readLine();
  85.  
  86.                             if (isOk.equals("/nok")) {
  87.                                 System.out.println("\n\nnickname is ok\n\n");
  88.  
  89.                                 VBox chatBox = new VBox(10);
  90.                                 TextArea textArea = new TextArea();
  91.                                 chatBox.getChildren().add(textArea);
  92.                                 //chatBox.setPadding(new Insets(55, 10, 10, 85));
  93.                                 HBox messageArea = new HBox(20);
  94.                                 final TextField messageField = new TextField();
  95.                                 messageField.setPromptText("Enter your message.");
  96.                                 messageField.setPrefColumnCount(30);
  97.                                 messageArea.getChildren().add(messageField);
  98.                                 Button sendButton = new Button("Send");
  99.                                 messageArea.getChildren().add(sendButton);
  100.                                 chatBox.getChildren().add(messageArea);
  101.                                 Scene chatScene = new Scene (chatBox, 500, 250);
  102.  
  103.                                 new Thread(new WriteMsg(out, messageField, sendButton, stage)).start();
  104.                                 new Thread(new ReadMsg(in, textArea)).start();
  105.  
  106.                                 stage.setScene(chatScene);
  107.                                 stage.show();
  108.  
  109.                             }
  110.                             else
  111.                                 System.out.println("\n\nnickname is not ok");
  112.                             /*
  113.                             new Thread(new WriteMsg(out, nickname.getText() )).start();
  114.                             new Thread(new ReadMsg(in)).start();
  115.                              */
  116.                         } catch (IOException e) {
  117.                             System.err.println(e);
  118.                         }
  119.                     }
  120.                     else
  121.                         System.out.println("wrong input");
  122.                 }
  123.         );
  124.  
  125.         startingBox = new AnimationTimer() {
  126.             @Override
  127.             public void handle(long l) {
  128.                 stage.show();
  129.  
  130.             }
  131.         };
  132.         stage.show();
  133.         //startingBox.start();
  134.     }
  135.  
  136.     public static void main(String[] args){
  137.         launch(args);
  138.     }
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement