domingo, 22 de julho de 2018

JavaFx - exemplo de paginattion

No tópico anterior, mostramos um exemplo
de controle por slider,
neste estamos mostrando um controle
por paginação que é usado para navegar
entre páginas de um único conteúdo,
que foi dividido em partes menores.
A função de retorno de chamada deve
carregar e retornar o conteúdo da página selecionada.

 Nulo deve ser retornado
se o índice de páginas selecionado não existir.
Veja agora mesmo como criei um controle
de paginação com cinco páginas,
e cada página, mostra um pequeno trecho
de um único texto.


Veja abaixo imagens do programa em execução:






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



Veja abaixo o código do programa:



import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Pagination;
import javafx.scene.control.TextArea;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;

public class PROJETO extends Application {
     AnchorPane root = new AnchorPane ( );
     Canvas canvas = new Canvas ( 610, 360 );
     final Scene scene = new Scene ( root, 610, 360, Color.BLUE );
     GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     GridPane grid = new GridPane ( );
     private Pagination paginas;
     final String [ ] textos_por_paginas = new String [ ] {
     "No princípio criou Deus o céu e a terra.\n\n"
     + "Gênesis 1:1\n",
     "E a terra era sem forma e vazia;\n"
     + "e havia trevas sobre a face do abismo;\n"
     + "e o Espírito de Deus se movia\n"
     + "sobre a face das águas\n\n"
     + "Gênesis 1:2",
     "E disse Deus: Haja luz; e houve luz.\n\n"
     + "Gênesis 1:3",
     "E viu Deus que era boa a luz;\n"
     + "e fez Deus separação entre \n"
     + "a luz e as trevas.\n\n"
     + "Gênesis 1:4",
     "E Deus chamou à luz Dia;\n"
     + " e às trevas chamou Noite.\n"
     + " E foi a tarde e a manhã,\n"
     + " o dia primeiro.\n\n"
     + "Gênesis 1:5" };
     // ////////////////////////////////////////////////////////////////////////
     public void Informe ( ) {
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "Por: ", 200, 220 );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Samuel Lima", 240, 220 );
         ctx.setFill ( Color.BLACK );
         ctx.fillText ( "sa_sp10@hotmail.com", 200, 235 );
         ctx.setFill ( Color.RED );
         ctx.fillText ( " MUITO OBRIGADO", 245, 270 );
     }
     // ////////////////////////////////////////////////////////////////////////
     public int itens_por_paginas ( ) {
         return 1;
     }
     // ////////////////////////////////////////////////////////////////////////
     public VBox Paginas ( int inseri_paginas ) {
         VBox box = new VBox ( 5 );
         grid.setPadding ( new Insets ( 8 ) );
         // Posiciona o TextArea na janela na horizontal
         grid.setHgap ( 4 );
         // Posiciona o TextArea na janela na vertical
         grid.setVgap ( 8 );
         int pagina = inseri_paginas * itens_por_paginas ( );
         TextArea text = new TextArea ( );
         for ( int i = pagina; i < pagina + itens_por_paginas ( ); i++ ) {
              text = new TextArea ( textos_por_paginas [ i ] );
              text.setWrapText ( true );
              box.getChildren ( ).add ( text );
         }
         text.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;"
         + "-fx-font-style: italic;"
         + " -fx-font-weight: bolder;"
         + " -fx-font-size: 12px;"
         + "-fx-alignment: center;"
         + "-fx-text-fill: blue" );
         box.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;" );
         // total de linhas para o TextArea
         text.setPrefRowCount ( 6 );     
         // Posiciona as Margens do TextArea
         grid.add ( text, 10, 10, 5, 10 );
         return box;
     }
     // ////////////////////////////////////////////////////////////////////////
     public void Page ( ) {
         paginas = new Pagination ( 5, 0 );
         paginas.setPageFactory ( ( Integer inseri_paginas ) -> {
              if ( inseri_paginas >= textos_por_paginas.length ) {
                   return null;
              } else {
                   return Paginas ( inseri_paginas );
              }
         } );
         AnchorPane.setTopAnchor ( paginas, 10.0 );
         AnchorPane.setRightAnchor ( paginas, 10.0 );
         AnchorPane.setBottomAnchor ( paginas, 10.0 );
         AnchorPane.setLeftAnchor ( paginas, 10.0 );
     }
     // ////////////////////////////////////////////////////////////////////////
     @Override
     public void start ( final Stage stage ) throws Exception {
         stage.setTitle ( "JAVAFX - EXEMPLO DE PAGINATION" );
         //Isto aqui impede que a janela seja expandida
         stage.setResizable ( false );
         // Criando moldura e aplicando efeitos com css
         root.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;" );
         ctx.setFont ( Font.font ( "Arial", FontWeight.BOLD, 15 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - EXEMPLO DE PAGINATION", 170, 60 );
         Page ( );
         Informe ( );
         root.getChildren ( ).addAll ( canvas, paginas, grid );
         stage.setScene ( scene );
         stage.show ( );
     }
     // ////////////////////////////////////////////////////////////////////////
     public static void main ( String [ ] args ) throws Exception {
         launch ( args );
     }
}
 

Nenhum comentário:

Postar um comentário

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