segunda-feira, 12 de fevereiro de 2018

Javafx - animação e efeito

A poderosa biblioteca javafx do java,
supreende pela sua alta performance
aliada com gráficos avançados e perfeitos.
Neste exemplo, estamos escolhendo uma palavra
num choicebox que recebeu sua carga por um
array de string.

"Confira no vídeo do programa em execução"
A palavra recebe efeito e animação
como era de se esperar, como também esperamos
que você estudante de java não perca esta
grande oportunidade de ingressar na área mais
comercial e evoluída da programação.

Veja abaixo uma imagem do programa em execução:


 


 
Veja abaixo o vídeo do programa:


Veja abaixo o código do programa:



import javafx.animation.Animation;

import javafx.animation.RotateTransition;
import javafx.animation.Transition;
import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.*;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.geometry.Insets;
import javafx.scene.control.Button;
import javafx.scene.effect.DropShadow;
import javafx.scene.input.KeyCode;
import javafx.util.Duration;

public class PROJETO extends Application {
     static String str = "";
     static String [ ] st = { "Um", "Dois", "Tres", "Quatro", "Cinco", "Seis",
              "Sete", "Oito", "Nove", "Dez", "Onze", "Doze", "Viva_Java" };
     static int i;
     static Canvas canvas = new Canvas ( 600, 340 );
     static GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     static Pane root = new Pane ( );
     static Scene scene = new Scene ( root, 600, 340 );
     static GridPane grid = new GridPane ( );
     static Button btn_1 = new Button ( "FECHAR" );
     static final Text text = new Text ( 190, 190, "" );

     // /////////////////////////////////////////////////////////////////////////
     public static Node Sair ( ) {
         btn_1.setPrefWidth ( 100 );// Largura do botão
         btn_1.setLayoutX ( 267 );// Posição do botão coluna
         btn_1.setPrefHeight ( 20 );// altura do botão
         btn_1.setLayoutY ( 300 );// //Posição do botão linha
         btn_1.setStyle ( "-fx-padding: 1;" + "-fx-border-style: solid inside;"
                   + "-fx-border-width: 2;" + "-fx-border-insets: 1;"
                   + "-fx-border-radius: 1;" + "-fx-border-color: red;"
                   + "-fx-font-style: italic;" + "-fx-font-family: Consolas;" );
         btn_1.setOnKeyPressed ( e -> {
              if ( e.getCode ( ) == KeyCode.ENTER ) {
                   System.exit ( 0 );
              }
         } );
         return btn_1;
     }
     // /////////////////////////////////////////////////////////////////////////
     public static void Choice_box ( ) {
         ChoiceBox < String > cb = new ChoiceBox < String > (
                   FXCollections.observableArrayList ( st ) );
         cb.setStyle ( "-fx-padding: 5;" + "-fx-border-style: solid inside;"
                   + "-fx-border-width: 2;" + "-fx-border-insets: 5;"
                   + "-fx-border-radius: 5;" + "-fx-border-color: black;" );
         cb.getSelectionModel ( ).selectedIndexProperty ( )
                   .addListener ( new ChangeListener < Number > ( ) {
                        public void changed ( ObservableValue ov, Number value,
                                 Number new_value ) {
                            str = st [ new_value.intValue ( ) ];
                            // Coluna, linha, comprimento, altura
                            ctx.clearRect ( 170, 100, 400, 50 );
                            ctx.clearRect ( 170, 130, 400, 50 );
                            ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL,
                                      14 ) );
                            i = new_value.intValue ( );
                            ctx.setFill ( Color.BLUE );
                            ctx.fillText ( "Palavra => ", 190, 110 );
                            ctx.setFill ( Color.RED );
                            ctx.fillText ( " " + str, 260, 110 );
                            ctx.setFill ( Color.BLUE );
                            ctx.fillText ( "Abaixo a palavra em animação", 190, 140 );
                            ctx.setFill ( Color.RED );
                            text.setFont ( Font.font ( null, FontWeight.BOLD, 35 ) );
                            final Animation anime = new Transition ( ) {
                                 {
                                      setCycleDuration ( Duration.millis ( 2000 ) );
                                 }
                                 protected void interpolate ( double frac ) {
                                      final int length = str.length ( );
                                      final int n = Math.round ( length
                                               * ( float ) frac );
                                      text.setFill ( Color.BLUE );
                                      DropShadow drop = new DropShadow ( );
                                      drop.setOffsetX ( 2.0f );
                                      drop.setOffsetY ( 4.0f );
                                      drop.setColor ( Color.rgb ( 150, 50, 50, .688 ) );                                      
                                      text.setEffect ( drop );
                                      text.setText ( str.substring ( 0, n ) );
                                      RotateTransition rotate = new RotateTransition ( );
                                      // Definindo a duração da transição
                                      rotate.setDuration ( Duration.millis ( 1000 ) );
                                      // Configurando o nó para a transição
                                      rotate.setNode ( text );
                                      // Ajustando o eixo da rotação
                                      rotate.setAxis ( Rotate.Y_AXIS );
                                      // Ajustando o ângulo da rotação
                                      rotate.setByAngle ( 360 );
                                      // Definindo a contagem de ciclos para a
                                      // transição
                                      rotate.setCycleCount ( 50 );
                                      // Configurando o valor do reverso automático
                                      // para falso
                                      rotate.setAutoReverse ( false );
                                      rotate.play ( );
                                 }
                            };
                            anime.play ( );
                        }
                   } );
         grid.add ( cb, 1, 1 );
     }
     // /////////////////////////////////////////////////////////////////////////
     public void start ( Stage stage ) {
         stage.setTitle ( "JAVAFX - ANIMAÇÃO E EFEITO" );
         // Criando moldura e dando efeitos
         root.setStyle ( "-fx-padding: 5;" + "-fx-border-style: solid inside;"
                   + "-fx-border-width: 10;" + "-fx-border-insets: 5;"
                   + "-fx-border-radius: 5;" + "-fx-border-color: cyan;" );
         ctx.setFont ( Font.font ( "Tahoma", FontWeight.NORMAL, 15 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - ANIMAÇÃO E EFEITO", 200, 50 );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Escolha uma palavra no choicebox", 190, 80 );
         Choice_box ( );
         Sair ( );
         grid.setPadding ( new Insets ( 15, 15, 60, 15 ) );
         root.getChildren ( ).addAll ( canvas, btn_1 );
         root.getChildren ( ).addAll ( grid, text );
         stage.setScene ( scene );
         stage.show ( );
     }
     // /////////////////////////////////////////////////////////////////////////
     public static void main ( String [ ] args ) {
         launch ( args );
     }
}

 

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.