Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package client;
- import javafx.animation.AnimationTimer;
- import javafx.application.Application;
- import javafx.geometry.Insets;
- import javafx.scene.Group;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.control.TextArea;
- import javafx.scene.control.TextField;
- import javafx.scene.layout.GridPane;
- import javafx.scene.layout.HBox;
- import javafx.scene.layout.VBox;
- import javafx.scene.paint.Color;
- import javafx.stage.Stage;
- import java.io.*;
- import java.net.Socket;
- public class Client extends Application {
- private AnimationTimer startingBox;
- private static Socket clientSocket; //сокет для общения
- private static BufferedReader reader; // нам нужен ридер читающий с консоли, иначе как
- // мы узнаем что хочет сказать клиент?
- private static BufferedReader in; // поток чтения из сокета
- private static BufferedWriter out; // поток записи в сокет
- @Override
- public void start(Stage stage) throws Exception {
- stage.setTitle("chat client");
- Group group = new Group();
- GridPane grid = new GridPane();
- grid.setPadding(new Insets(50, 10, 10, 85));
- grid.setVgap(10);
- grid.setHgap(5);
- final TextField nickname = new TextField();
- nickname.setPromptText("Enter your nickname.");
- nickname.setPrefColumnCount(10);
- GridPane.setConstraints(nickname, 0, 0);
- grid.getChildren().add(nickname);
- final TextField connectionAddress = new TextField();
- connectionAddress.setPromptText("Enter server's IP.");
- GridPane.setConstraints(connectionAddress, 0, 1);
- grid.getChildren().add(connectionAddress);
- Button submit = new Button("Start");
- GridPane.setConstraints(submit, 0, 2);
- grid.getChildren().add(submit);
- group.getChildren().add(grid);
- Scene startingScene = new Scene(group, 350, 200, Color.CADETBLUE);
- stage.setScene(startingScene);
- submit.setOnMouseClicked(
- event->{
- if (nickname.getText() != null && !nickname.getText().isEmpty()) {
- //System.out.println("testing button!");
- try {
- if (connectionAddress.getText().isEmpty()) {
- clientSocket = new Socket("localhost", 3443);
- System.out.println("connected by localhost");
- }
- else{
- clientSocket = new Socket(connectionAddress.getText(), 3443);
- System.out.println("connected by " + connectionAddress.getText());
- }
- in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
- out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
- out.write(nickname.getText() + "\n");
- out.flush();
- String isOk = in.readLine();
- if (isOk.equals("/nok")) {
- System.out.println("\n\nnickname is ok\n\n");
- VBox chatBox = new VBox(10);
- TextArea textArea = new TextArea();
- chatBox.getChildren().add(textArea);
- //chatBox.setPadding(new Insets(55, 10, 10, 85));
- HBox messageArea = new HBox(20);
- final TextField messageField = new TextField();
- messageField.setPromptText("Enter your message.");
- messageField.setPrefColumnCount(30);
- messageArea.getChildren().add(messageField);
- Button sendButton = new Button("Send");
- messageArea.getChildren().add(sendButton);
- chatBox.getChildren().add(messageArea);
- Scene chatScene = new Scene (chatBox, 500, 250);
- new Thread(new WriteMsg(out, messageField, sendButton, stage)).start();
- new Thread(new ReadMsg(in, textArea)).start();
- stage.setScene(chatScene);
- stage.show();
- }
- else
- System.out.println("\n\nnickname is not ok");
- /*
- new Thread(new WriteMsg(out, nickname.getText() )).start();
- new Thread(new ReadMsg(in)).start();
- */
- } catch (IOException e) {
- System.err.println(e);
- }
- }
- else
- System.out.println("wrong input");
- }
- );
- startingBox = new AnimationTimer() {
- @Override
- public void handle(long l) {
- stage.show();
- }
- };
- stage.show();
- //startingBox.start();
- }
- public static void main(String[] args){
- launch(args);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement