domingo, 22 de julho de 2018

JavaFx - exemplo de slider

O componente do javaFx que fornece intervalos
contínuos de valores numéricos opcionais é o Slider.
Seu aspecto e funcionamento  é semelhante a um slider

(objeto) encontrado em diversos aparelhos eletrônicos.
Neste exemplo temos uma trilha e um botão que desliza
quando arrastado para direita ou esquerda,
e enquanto os valores numéricos são mostrados num
contador uma imagem opcionalmente colocada por mim,
aumenta e diminui de tamanho.
Com este controle que desliza podemos facilmente
mostrar rótulos, gráficos, áudio, vídeo etc..
Sempre variando seus valores opcionalmente pelo
botão deslizante.
Como tudo nesta poderosa biblioteca impressiona,
pelo seu alto desempenho e facilidade de uso,
Com a classe Slider não é diferente.
Basicamente só usamos três variáveis fundamentais
que são: min, max e value.
O valor deve ser sempre um número dentro do intervalo
definido por min e max. min deve ser sempre menor que max.
min padrão é 0, enquanto o valor max padrão é 100.
Neste exemplo criei um controle deslizante cujo intervalo,
varia entre 0 a 3, e o valor padrão é 1.5:


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




Veja abaixo um vídeo com o funcionamento do programa:


Veja abaixo o código do programa:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;

public class PROJETO extends Application {
     BorderPane root = new BorderPane ( );
     Canvas canvas = new Canvas ( 600, 500 );
     Scene scene = new Scene ( root, 600, 500 );
     GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     GridPane grid = new GridPane ( );
     final Slider escala = new Slider ( 0.0, 3, 1.5 );
     final Label obter_escala = new Label ( "Escala" );
     final Label obter_valor_escala = new Label ( Double.toString ( escala
              .getValue ( ) ) );
     final static Color textColor = Color.RED;
////////////////////////////////////////////////////////////////////////////
     public void Informe ( ) {
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "Por: ", 200, 340 );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Samuel Lima", 240, 340 );
         ctx.setFill ( Color.BLACK );
         ctx.fillText ( "sa_sp10@hotmail.com", 200, 355 );
         ctx.setFill ( Color.RED );
         ctx.fillText ( " MUITO OBRIGADO", 220, 390 );
     }
     // /////////////////////////////////////////////////////////////////////////
     @Override
     public void start ( Stage stage ) throws FileNotFoundException {
         stage.setTitle ( "JAVAFX - EXEMPLO DE SLIDER" );
         final Image image = new Image (
                   new FileInputStream (
                            "H:\\eclipse - luna java\\PROJETOS\\PROJETO\\src\\Foto\\java.png" ) );
         final ImageView java = new ImageView ( image );   
         //Criando moldura e aplicando efeitos
         grid.setStyle ( "-fx-padding: 5;"
         + "-fx-border-style: solid inside;"
         + "-fx-border-width: 12;"
         + "-fx-border-insets: 5;"
         + "-fx-border-radius: 5;"
         + "-fx-border-color: darkblue;" );  
         //Um toque de requinte no Slider
         escala.setStyle ( "-fx-padding: 5;"
         + "-fx-border-style: solid inside;"
         + "-fx-border-width: 2;"
         + "-fx-border-insets: 5;"
         + "-fx-border-radius: 5;"
         + "-fx-border-color: darkblue;" );
         //Um toque de requinte no Label
         obter_escala  .setStyle ( "-fx-padding: 5;"
         + "-fx-border-style: solid inside;"
         + "-fx-border-width: 2;"
         + "-fx-border-insets: 5;"
         + "-fx-border-radius: 5;"
         + "-fx-border-color: darkblue;" );
         //Um toque de requinte no valor da escala
         obter_valor_escala .setStyle ( "-fx-padding: 5;"
         + "-fx-border-style: solid inside;"
         + "-fx-border-width: 2;"
         + "-fx-border-insets: 5;"
         + "-fx-border-radius: 5;"
         + "-fx-border-color: darkblue;" );
         ctx.setFont ( Font.font ( "Arial", FontWeight.BOLD, 15 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - EXEMPLO DE SLIDER", 170, 30 );
         //Altura da imagem
         java.setFitHeight ( 235 );
         //Largura da imagem
         java.setFitWidth ( 100 );
         //Mantendo as proporções
         java.setPreserveRatio ( true );
         //Restrições para a imagem
         GridPane.setConstraints ( java, 1, 2 );
         //Períodos para colunas da imagem
         GridPane.setColumnSpan ( java, 1 );
         obter_escala .setTextFill ( textColor );
         GridPane.setConstraints ( obter_escala , 0, 80 );
         escala.valueProperty ( ).addListener (
                   ( ObservableValue < ? extends Number > ov, Number old_val,
                            Number new_val ) -> {
                                 java.setScaleX ( new_val.doubleValue ( ) );
                                 java.setScaleY ( new_val.doubleValue ( ) );
                                 obter_valor_escala.setText
                                 ( String.format ( "%.2f", new_val ) );
                                 } );                       
         GridPane.setConstraints ( escala, 1, 80 );
         obter_valor_escala.setTextFill ( textColor );
         GridPane.setConstraints ( obter_valor_escala, 2, 80 );
         grid.setVgap ( 5 );
         //grid.setHgap ( 32 );
         grid.add ( java, 2, 20, 20, 37 );
         root.getChildren ( ).addAll ( canvas );
         grid.getChildren ( ).addAll ( root, escala, obter_escala,
                   obter_valor_escala  );
         scene.setRoot ( grid );
         Informe ( );
         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.