@Override public void start(Stage primaryStage) { VBox loginPane = new VBox(); loginPane.setAlignment(Pos.CENTER); primaryStage.setTitle("Amoeba"); primaryStage.setScene(new Scene(loginPane, 800, 600)); primaryStage.show(); TextField username = new TextField(); username.setPromptText("Username"); username.setMaxSize(200, 50); Timeline renderTimer = new Timeline(); Timeline inputTimer = new Timeline(); ColorPicker colorPicker = new ColorPicker(); colorPicker.setEditable(true); colorPicker.setValue(Color.BLACK); lagLabel.setTranslateX(25); lagLabel.setTranslateY(10); lagLabel.setTextFill(Color.RED); TextField address = new TextField("localhost"); address.setPromptText("Server IP Address"); address.setMaxSize(200, 50); TextField port = new TextField("8080"); port.setPromptText("Port Number"); port.setMaxSize(200, 50); Button btn = new Button("Play"); btn.setDefaultButton(true); loginPane.getChildren().addAll(username, colorPicker, address, port, btn); primaryStage.setResizable(false); music.setCycleCount(MediaPlayer.INDEFINITE); renderPane.setBackground(new Background(backgroundImage)); renderPane.setPrefSize(800, 600); chatBox.setPrefSize(400, 100); chatBox.setTranslateX(0); chatBox.setTranslateY(468); chatBox.setWrapText(true); chatBox.setEditable(false); chatBox.setStyle("-fx-opacity: 0.5"); chatInput.setPrefSize(400, 10); chatInput.setTranslateX(0); chatInput.setTranslateY(570); chatInput.setStyle("-fx-opacity: 0.8"); highScores.setPrefSize(400, 210); highScores.setEditable(false); currentScores.setPrefSize(400, 250); currentScores.setEditable(false); currentScores.setLayoutY(210); scores.setTranslateX(-390); scores.setTranslateY(0); scores.setStyle("-fx-opacity: 0.8"); scores.setOnMouseEntered( (e) -> { scores.setTranslateX(0); }); scores.setOnMouseExited( (e) -> { if (e.getX() > 350) { scores.setTranslateX(-390); } }); btn.setOnAction( (e) -> { if (!networkController.isConnected()) { networkController.connect(address.getText(), Integer.parseInt(port.getText())); if (username.getText().isEmpty()) { username.setText("Anonymous"); } networkController.sendMessage(new LoginMessage(username.getText(), "")); ArrayList<KeyValuePair> properties = new ArrayList<>(); properties.add(new KeyValuePair("color", colorPicker.getValue().toString())); networkController.sendMessage(new SetBlobPropertiesMessage(properties)); primaryStage.setScene(new Scene(renderPane)); renderTimer.play(); inputTimer.play(); music.play(); } }); inputTimer.setCycleCount(Timeline.INDEFINITE); inputTimer .getKeyFrames() .add( new KeyFrame( Duration.seconds(0.05), (e) -> { if (sendCoordinates) { networkController.sendMessage(new MoveTowardCoordinatesMessage(x, y)); } })); renderTimer.setCycleCount(Timeline.INDEFINITE); renderTimer .getKeyFrames() .add( new KeyFrame( Duration.seconds(0.01), (e) -> { render(); })); renderPane.setOnMouseReleased( (e) -> { this.sendCoordinates = false; }); renderPane.setOnMouseDragged( (e) -> { this.sendCoordinates = true; this.x = e.getX(); this.y = e.getY(); }); renderPane.setOnMouseClicked( (e) -> { if (e.getButton() == MouseButton.SECONDARY) { networkController.sendMessage(new BoostMessage()); } else if (e.getClickCount() > 1 || e.getButton() == MouseButton.MIDDLE) { networkController.sendMessage(new SplitMessage()); } }); renderPane.setOnKeyPressed( (e) -> { if (e.getCode().equals(KeyCode.ENTER) && !chatInput.getText().isEmpty()) { networkController.sendMessage(new ChatMessage("", chatInput.getText())); chatInput.clear(); } }); primaryStage.setOnCloseRequest( (e) -> { networkController.sendMessage(new LogoutMessage()); try { Thread.sleep(100); } catch (InterruptedException ex) { Logger.getLogger(AmoebaClient.class.getName()).log(Level.WARNING, null, ex); } finally { System.exit(0); } }); }
public void setLyrics() throws IOException { lyrStage = new Stage(); lyrStage.setTitle("Lyrics setting"); lyrStage.setHeight(420); AnchorPane root = new AnchorPane(); root.setStyle( "-fx-border-color: black, transparent; -fx-border-width: 1px, 5px; -fx-border-insets: 0px, 1px"); root.setOnMouseDragged( new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent me) { lyrStage.setX(me.getScreenX()); lyrStage.setY(me.getScreenY()); } }); lyrStage.initStyle(StageStyle.UNDECORATED); Scene scene = new Scene(root); final TextArea lyricArea = new TextArea(); lyrStage.setScene(scene); lyricArea.setPrefHeight(100); lyricArea.setPrefWidth(190); lyricArea.setMinHeight(100); lyricArea.setLayoutY(315); lyricArea.setLayoutX(7); lyricArea.setMaxWidth(TextField.USE_PREF_SIZE); final Label label = new Label(); /* final ScrollPane sp = new ScrollPane(); sp.setPrefSize(200, 200); sp.setHbarPolicy(ScrollBarPolicy.AS_NEEDED); sp.setVbarPolicy(ScrollBarPolicy.AS_NEEDED); sp.setPannable(true); sp.setContent(label); sp.vvalueProperty().addListener(new ChangeListener<Number>() { @Override public void changed(ObservableValue<? extends Number> ov, Number old_val, Number new_val) { label.setLayoutY(-new_val.doubleValue()); label.setLayoutX(-new_val.doubleValue()); } }); */ label .textProperty() .bind( new StringBinding() { { bind(lyricArea.textProperty()); } @Override protected String computeValue() { String text = lyricArea.getText(); return "Lyric preview: \n\n " + songName + "\n\n" + text; } }); final VBox vBox = new VBox(); vBox.setPrefHeight(800); // //////////////////////////////////////// vBox.setPrefWidth(240); vBox.setPadding(new Insets(18)); vBox.getChildren().addAll(label); final VBox vBox2 = new VBox(); vBox2.setPrefHeight(340); vBox2.setPrefWidth(240); vBox2.setAlignment(Pos.BOTTOM_RIGHT); Button btnText = new Button(); btnText.setText("Ok"); btnText.setStyle("-fx-base: white;"); btnText.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { String txt = lyricArea.getText(); textSet(txt); lyrStage.close(); } }); vBox2.getChildren().add(btnText); ScrollBar sc = new ScrollBar(); sc.setMin(0); sc.setMax(500); sc.setValue(30); sc.setPrefWidth(3); sc.setPrefHeight(160); sc.setVisibleAmount(10); sc.setOrientation(Orientation.VERTICAL); sc.valueProperty() .addListener( new ChangeListener<Number>() { @Override public void changed( ObservableValue<? extends Number> ov, Number old_val, Number new_val) { label.setLayoutY(-new_val.doubleValue()); } }); root.getChildren().addAll(vBox, lyricArea, vBox2, sc); lyrStage.setX(50); lyrStage.setY(50); lyrStage.show(); }