quarta-feira, 5 de abril de 2017

Javafx - array multidimensional de string

Cheguei agora pouco por aqui, e já tive uma idéia:
Vou imprimir  um texto longo numa janela de javafx,
então não tive nenhuma dúvida, serei obrigado
a usar scrollpane, e como já tinha um código
por aqui com menu e textfield, apenas acrescentei
o scroll, deu um pouco de trabalho, más aqui
está, a funcionalidade de pesquisa ainda não foi
imprementado, fica para um novo post.
Se você já domina bem o java acompanhe atentamente
como fiz e aproveite o código para estudos.

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


Veja abaixo o código do programa:



import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.ScrollPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.control.Button;
import javafx.geometry.Insets;
import javafx.scene.layout.HBox;

public class PROJETO extends Application {
     static Stage           stage;
     static String          str           = "";
     static String          str_1         = "MUITO OBRIGADO";
     static String          str_3         = "Por: Samuel Lima";
     static String          str_4         = "";
     static int                  a             = 0, b = 0;
     static Group           root      = new Group ( );
     static Pane                 ro_ot         = new Pane ( );
     static Scene           scene         = new Scene ( root, 690, 390, Color.PINK );
     static Canvas          canvas        = new Canvas ( 2000, 2000 );
     static GraphicsContext ctx           = canvas.getGraphicsContext2D ( );
     static ScrollPane      s1            = new ScrollPane ( );
     static TextField       textField = new TextField ( );
     static HBox                 hbox      = new HBox ( textField );
     static BorderPane      borderPane    = new BorderPane ( );
     static MenuBar              menuBar       = new MenuBar ( );
     // /////////////////////////////////////////////////////////////////////
     // Chamando uma função depois de um certo tempo
     public static void Tempo_3 ( ) {
         ctx.setFill ( Color.RED );
         ctx.fillText ( str_1, 280, 320 );
     }
     public static void Tempo_2 ( ) {
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( str_3, 280, 300 );
     }
     public static void Tempo_1 ( ) {
         // Coluna, linha, comprimento, altura
         // Apagando uma linha ou partes
         ctx.clearRect ( 150, 330, 300, 60 );
     }
     // /////////////////////////////////////////////////////////////////
     public static int Sleep ( int x, int k ) {
         Task < Integer > close = new Task < Integer > ( ) {
              @Override
              protected Integer call ( ) throws Exception {
                   Thread.sleep ( x );
                   return null;
              }
         };
         close.setOnSucceeded ( c -> {
              if ( k == 1 )
                   Tempo_1 ( );
              if ( k == 2 )
                   Tempo_2 ( );
              if ( k == 3 )
                   Tempo_3 ( );
         } );
         new Thread ( close ).start ( );
         return 0;
     }
     // /////////////////////////////////////////////////////////////////
     public static int But_ton_2 ( ) {
         //Botão declarado local
         Button btn_2 = new Button ( "cls" );
         btn_2.setPrefWidth ( 40 );// Largura do botão
         btn_2.setLayoutX ( 623 );// Posição do botão
         btn_2.setPrefHeight ( 24 );// altura do botão
         btn_2.setLayoutY ( 343 );// //Posição do botão
         btn_2.setOnAction ( new EventHandler < ActionEvent > ( ) {
              @Override
              public void handle ( ActionEvent event ) {
                   // Coluna, linha, comprimento, altura
                   // Apagando uma linha ou partes
                   ctx.clearRect ( 150, 270, 400, 60 );
              }
         } );
         root.getChildren ( ).add ( btn_2 );
         return 0;
     }
     // /////////////////////////////////////////////////////////////////
     public static void Ar_ay ( ) {
         int i, j;
         String [ ] [ ] texto = {
                   {"Debaixo dumas mui formosas tamareiras,      \n"}, 
                   {"Estando já Berseba na escuridão.            \n"}, 
                   {"As aves escutando, entre as roseiras,       \n"}, 
                   {"Se vê andar o patriarca Abraão.             \n"}, 
                   {"Seu coração perante Deus está aflito,       \n"}, 
                   {"Pois quer que O sirvamos sem murmuração;    \n"}, 
                   {"E por amor pergunta ao Senhor bendito:      \n"}, 
                   {"O meu amado filho queres Tu, então?         \n"}, 
                   {"                                            \n"}, 
                   {"A voz de Jeová potente é ouvida:            \n"}, 
                   {"O teu Isaque oferece para Mim,              \n"}, 
                   {"Embora fiques com tu'alma dolorida,         \n"}, 
                   {"Pois te abençoo se fizeres tu assim.        \n"}, 
                   {"De abatido Abraão se torna forte            \n"}, 
                   {"E Canta hinos, pois com fé medita já:       \n"}, 
                   {"Deus pode o meu filho libertar da morte!    \n"}, 
                   {"E não temendo, segue para Moriá.            \n"}, 
                   {"                                            \n"}, 
                   {"Ao pé do monte do supremo sacrifício,       \n"}, 
                   {"Profunda duvida entrou em Abraão:           \n"}, 
                   {"Irei perder da minha vida o beneficio?      \n"}, 
                   {"E triste começou subir com lentidão,        \n"}, 
                   {"Pois ia dar, do coração a esperança         \n"}, 
                   {"- No seu outono, sacrifício duma flor,&     \n"}, 
                   {"Assim levou o seu cordeiro à matança,       \n"}, 
                   {"Em obediência ao mandato do Senhor.         \n"}, 
                   {"                                            \n"}, 
                   {"Isaque com a lenha, presto vai na frente,   \n"}, 
                   {"Oh! Quanto é formoso para Abraão!           \n"}, 
                   {"Mas eis que volta p'ra seu pai suavemente   \n"}, 
                   {"E lhe dirige esta interrogação:             \n"}, 
                   {"O fogo e a lenha estou vendo que trouxemos, \n"}, 
                   {"Mas o cordeiro d'holocausto onde está?      \n"}, 
                   {"E a resposta de Abraão na Bíblia temos:     \n"}, 
                   {"Meu filho, Deus pra Si, Cordeiro proverá    \n"}, 
                   {"                                            \n"}, 
                   {"Chegando Abraão aonde Deus mandara,         \n"}, 
                   {"Fez um altar e nele a lenha arrumou:        \n"}, 
                   {"E a seu filho, que já dantes amarrara,      \n"}, 
                   {"Tomando nos seus braços sobre o altar deitou\n"}, 
                   {"Mas quando Abraão foi para imolá-lo,        \n"}, 
                   {"O Anjo do Senhor bradou-lhe desde os céus:  \n"}, 
                   {"A tua mão, ó não estendas p'ra matá-lo;     \n"}, 
                   {"Porquanto eu agora sei que temes Deus.      \n"}, 
                   {"                                            \n"}, 
                   {"Erguendo Abraão seus olhos de repente,      \n"}, 
                   {"Vê um cordeiro, que no mato preso está,     \n"}, 
                   {"E o tomando, oferece-o alegremente;         \n"}, 
                   {"Assim No monte do Senhor se proverá.        \n"}, 
                   {"A voz do Anjo é ouvida novamente;           \n"}, 
                   {"Diz o Senhor: Porque fizeste esta ação,     \n"}, 
                   {"Deveras, Eu abençoarei a tua semente,       \n"}, 
                   {"E nela, as nações benditas se farão.        \n"}, 
                   {"                                            \n"}, 
                   {"O nosso Isaque oferecemos com firmeza       \n"}, 
                   {"No Moriá onde finda o ideal,                \n"}, 
                   {"Pois foi ali que alcançaram fortaleza,      \n"}, 
                   {"Os vencedores, sob canto angelical;         \n"}, 
                   {"Ali, o nosso Deus jurou fidelidade,         \n"}, 
                   {"Também os santos se encheram de valor,      \n"}, 
                   {"E só teremos a perfeita santidade,          \n"}, 
                   {"Depois que formos para o monte do Senhor    \n"}};    
         for ( i = 0; i < texto.length; i++ ) {               
              str = str + texto [ i ] [ 0 ];
              for ( j = 1; j < texto [ i ].length; j++ ) {
                   str = str + texto [ i ] [ j ] + " ";
              }
         }
         ctx.setFill ( Color.BLACK );
         ctx.fillText ( str, 155, 100 );
     }
     // /////////////////////////////////////////////////////////////////
     public static int Menu_Bar ( ) {
         EventHandler < ActionEvent > action = changeTabPlacement ( );
         Menu menu = new Menu ( "Arq" );
         MenuItem top = new MenuItem ( "Exit" );
         top.setOnAction ( action );
         menu.getItems ( ).add ( top );
         MenuItem bottom = new MenuItem ( "Inf" );
         bottom.setOnAction ( action );
         menu.getItems ( ).add ( bottom );
         menuBar.getMenus ( ).add ( menu );
         ro_ot.prefHeightProperty ( ).bind ( scene.heightProperty ( ) );
         ro_ot.prefWidthProperty ( ).bind ( scene.widthProperty ( ) );
         borderPane.setTop ( menuBar );
         return 0;
     }
     // /////////////////////////////////////////////////////////////////
     private static EventHandler < ActionEvent > changeTabPlacement ( ) {
         return new EventHandler < ActionEvent > ( ) {
              public void handle ( ActionEvent event ) {
                   MenuItem mItem = ( MenuItem ) event.getSource ( );
                   String side = mItem.getText ( );
                   int b = 0;
                   if ( "Exit".equalsIgnoreCase ( side ) ) {
                        System.exit ( 0 );
                   }
                   else if ( "Inf".equalsIgnoreCase ( side ) ) {
                        textField.clear ( );
                        But_ton_2 ( );
                        ctx.clearRect ( 150, 280, 400, 80 );
                        b = 3;
                        Sleep ( 2800, b );
                        b = 2;
                        Sleep ( 1800, b );
                   }
              }
         };
     }
     // /////////////////////////////////////////////////////////////////
     @Override
     public void start ( Stage stage ) {
         stage.setTitle ( "ARRAY MULTIDIMENSIONAL DE STRING EM JAVAFX" );
         stage.setScene ( scene );
         stage.setResizable ( false );
         s1.setPannable ( true );
         s1.setLayoutX ( 20 );
         s1.setLayoutY ( 20 );
         s1.setPrefSize ( 660, 1960 );
         s1.setPrefHeight ( 360 );
         s1.setContent ( canvas );
         ctx.setFill ( Color.RED );
         ctx.setFont ( Font.font ( "Serif", FontWeight.BOLD, 20 ) );
         ctx.fillText ( "ARRAY MULTIDIMENSIONAL DE STRING", 140, 30 );
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 15 ) );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "IMPRIMINDO ABAIXO O ARRAY DE STRING", 180, 60 );
     /////////////////////////////////////////////////////////////////////////
         root.getChildren ( ).add ( s1 );
         Menu_Bar ( );
         Ar_ay ( );
         hbox.setPadding ( new Insets ( 340, 0, 10, 22 ) );
         ctx.setFont ( Font.font ( "Tahoma", FontWeight.NORMAL, 12 ) );
         textField.setPromptText("Pesquisa");
         root.getChildren ( ).add ( hbox );
         borderPane.setPadding ( new Insets ( 22, 0, 10, 22 ) );
         root.getChildren ( ).add ( borderPane );
         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.