Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.net.Socket;
- import javafx.application.Application;
- import javafx.geometry.Insets;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.control.Label;
- import javafx.scene.control.ScrollPane;
- import javafx.scene.control.TextArea;
- import javafx.scene.control.TextField;
- import javafx.scene.control.ScrollPane.ScrollBarPolicy;
- import javafx.scene.image.Image;
- import javafx.scene.image.ImageView;
- import javafx.scene.layout.Background;
- import javafx.scene.layout.BackgroundFill;
- import javafx.scene.layout.BorderPane;
- import javafx.scene.paint.Color;
- import javafx.stage.Stage;
- public class SoapClient extends Application {
- Button connectButton = new Button("Connect");
- Button sendButton = new Button("Send >>>");
- TextField userEntry = new TextField();
- TextField serverEntry = new TextField();
- static TextArea chatLog = new TextArea();
- TextArea chat = new TextArea();
- int serverSocket = 8000;
- ClientHandler runClient = new ClientHandler(serverSocket);
- public static void main(String[] args) {
- Application.launch(args);
- }
- @Override
- public void start(Stage primaryStage) {
- Image companyIcon = null;
- try {
- companyIcon = new Image(new FileInputStream("E:\\SoapBox\\src\\CompanyIcon.png"));
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- primaryStage.getIcons().add(companyIcon);
- BorderPane clientWindow = new BorderPane();
- //Top area of client window used to connect to server
- BorderPane connectArea = new BorderPane();
- //connectArea settings
- connectArea.setBackground(new Background(new BackgroundFill(Color.CORNFLOWERBLUE, null, null)));
- connectArea.setMinSize(600, 150);
- connectButton.setBackground(new Background(new BackgroundFill(Color.WHITESMOKE, null, null)));
- connectButton.setMinSize(100, 80);
- connectButton.setStyle("-fx-font-size: 14;");
- connectArea.setMargin(connectButton, new Insets(35,20,0,0));
- //input area for username and server
- BorderPane entryFields = new BorderPane();
- userEntry.setMinSize(80, 30);
- connectArea.setMargin(entryFields,new Insets(20,20,20,0));
- serverEntry.setMinSize(80, 30);
- entryFields.setPadding(new Insets(10));
- entryFields.setTop(userEntry);
- entryFields.setBottom(serverEntry);
- //labels for connect area
- BorderPane entryLabels = new BorderPane();
- Label user = new Label("Username: ");
- user.setStyle("-fx-font-size: 18;" + "-fx-font-weight: bold;");
- Label server = new Label("Server: ");
- server.setStyle("-fx-font-size: 18;" + "-fx-font-weight: bold;");
- connectArea.setMargin(entryLabels, new Insets(20,0,20,20));
- user.setMinSize(100, 50);
- server.setMinSize(100, 50);
- entryLabels.setTop(user);
- entryLabels.setBottom(server);
- connectArea.setRight(connectButton);
- connectArea.setCenter(entryFields);
- connectArea.setLeft(entryLabels);
- clientWindow.setTop(connectArea);
- //Middle area of client used to view messages from other user clients
- chatLog.setMinSize(620, 510);
- chatLog.setEditable(false);
- chatLog.setWrapText(true);
- ScrollPane chatViewer = new ScrollPane(chatLog);
- chatViewer.setMinSize(600, 500);
- chatViewer.setHbarPolicy(ScrollBarPolicy.NEVER);
- clientWindow.setCenter(chatViewer);
- //Bottom area of client window used to enter and send chat messages
- BorderPane chatArea = new BorderPane();
- //chatArea settings
- chatArea.setBackground(new Background(new BackgroundFill(Color.CORNFLOWERBLUE, null, null)));
- chatArea.setMinSize(600, 150);
- chat.setWrapText(true);
- sendButton.setStyle("-fx-font-size: 14;");
- sendButton.setDefaultButton(true);
- sendButton.setMinSize(120, 50);
- ScrollPane chatEnter = new ScrollPane(chat);
- chatEnter.setHbarPolicy(ScrollBarPolicy.NEVER);
- chatEnter.setMaxSize(500,100);
- chatArea.setMargin(chatEnter, new Insets(10,0,0,10));
- chatArea.setMargin(sendButton, new Insets(10,10,0,0));
- chatArea.setLeft(chatEnter);
- chatArea.setRight(sendButton);
- Image companyLogo = null;
- try {
- companyLogo = new Image(new FileInputStream("E:\\SoapBox\\src\\ProjectLogo.png"));
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- chatArea.setBottom(new ImageView(companyLogo));
- clientWindow.setBottom(chatArea);
- //clientWindow settings
- clientWindow.setMinSize(600,800);
- //Event handling code
- //send handler
- sendButton.setOnAction( e-> {
- runClient.sendToServer(userEntry.getText() + ": " + chat.getText());
- chat.clear();
- });
- //connect handler
- //takes serverEntry and uses that to choose server to connect to, and saves username entered to be sent to server
- connectButton.setOnAction( e-> {
- connectToServer();
- buttonUpdate();
- });
- Scene scene = new Scene(clientWindow);
- primaryStage.setResizable(false);
- primaryStage.setTitle("SoapBox"); // Set the stage title
- primaryStage.setScene(scene); // Place the scene in the stage
- primaryStage.show(); // Display the stage
- primaryStage.setOnCloseRequest( e -> {
- runClient.closeConnection();
- });
- }
- //connects to server and sets port#
- private void connectToServer() {
- serverSocket = Integer.parseInt(serverEntry.getText());
- new Thread(runClient).start();
- }
- //access method to update chatlog
- public static void updateChat(String message) {
- chatLog.appendText(message);
- System.out.println(message);
- System.out.println("message");
- }
- public void buttonUpdate() {
- Button defaultButton = connectButton;
- //changes button settings to be more interactive
- connectButton.setText("Connected");
- connectButton.setBackground(new Background(new BackgroundFill(Color.LIGHTGREEN, null, null)));
- connectButton.setOnMouseEntered( e-> {
- connectButton.setText("Disconnect");
- connectButton.setBackground(new Background(new BackgroundFill(Color.RED, null, null)));
- });
- connectButton.setOnMouseExited( e-> {
- connectButton.setText("Connected");
- connectButton.setBackground(new Background(new BackgroundFill(Color.LIGHTGREEN, null, null)));
- });
- //Restores button to default functionality
- connectButton.setOnAction( e-> {
- //clears username and server fields
- userEntry.clear();
- serverEntry.clear();
- //closes connection and sets button to default settings
- runClient.closeConnection();
- connectButton.setText("Connect");
- connectButton.setBackground(new Background(new BackgroundFill(Color.WHITESMOKE, null, null)));
- connectButton.setOnMouseEntered(null);
- connectButton.setOnMouseExited(null);
- connectButton.setOnAction( h-> {
- serverSocket = Integer.parseInt(serverEntry.getText());
- new Thread(runClient).start();
- });
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement