domingo, 6 de novembro de 2016

Javafx - Array: gerar imprimir e embaralhar

Estamos mostrando mais um excelente exemplo de uso de array em java,
desta vez, o programa gera, imprime e embaralha todos os elementos
que foram gerados utilizando a classe java.util.Random que é capaz de
gerar números aleatórios em java.
Más a graça do programa é sua bela interface com borda criada
utilizando a classe canvas que é muito boa para desenhos de figuras
geométricas como retângulos, polígonos, triângulos entre outros.
Se você está a procura de um programa com menu e caixa de diálogos,
aproveite este exemplo, e se possível compartilhe seus conhecimentos desta
 poderosa linguagem de programação conosco.

Veja abaixo imagens do programa em execução:





















Veja abaixo o código do programa:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
import java.util.Random;

public class PROJETO extends Application {
     String    str             = "";
     String    str_2     = "";
     int       i, n = 100, a = 0, b = 0;
     int       vet [ ]         = new int [ n ];
     int       ve_t [ ]  = new int [ n ];
     int       x               = 0, y = 0, k = 0;

     @Override
     public void start ( Stage primaryStage ) {
          Canvas canvas = new Canvas ( 690, 500 );
          GraphicsContext ctx = canvas.getGraphicsContext2D ( );
          ctx.setFont ( Font.font ( "Arial", FontWeight.BOLD, 15 ) );
          ctx.setFill ( Color.RED );
          ctx.fillText ( "ARRAY: GERAR - IMPRIMIR E EMBARALHAR", 170, 80 );
          ctx.setLineWidth ( 22.0 );
          ctx.setStroke ( Color.GREEN );
          ctx.strokeRect ( 10, 35, 640, 420 );
          BorderPane root = new BorderPane ( );
          root.getChildren ( ).add ( canvas );
          Scene scene = new Scene ( root, 660, 465 );
          primaryStage.setScene ( scene );
          primaryStage.setTitle ( "ARRAY: GERAR - IMPRIMIR E EMBARALHAR" );
          // //////////////////////////////////////////////////////////////////////
          MenuBar m_nu_1 = new MenuBar ( );
          Menu m_nu = new Menu ( "Arq" );
          MenuItem exd = new MenuItem ( "Sair" );
          MenuItem te_d = new MenuItem ( "Imprimir" );
          m_nu.getItems ( ).addAll ( te_d, exd );
          // /////////////////////////////////////////////////
          Menu m_enu = new Menu ( "Vet" );
          MenuItem vis_vet = new MenuItem ( "Rand" );
          MenuItem vis_vet_1 = new MenuItem ( "Sobre" );
          m_enu.getItems ( ).addAll ( vis_vet, vis_vet_1 );
          // ////////////////////////////////////////////////////
          m_nu_1.getMenus ( ).add ( m_nu );
          m_nu_1.getMenus ( ).add ( m_enu );
          root.setTop ( m_nu_1 );
          // //////////////////////////////////////////////////////////////////////
          exd.setOnAction ( new EventHandler < ActionEvent > ( ) {
                @Override
                public void handle ( ActionEvent e ) {
                     primaryStage.close ( );
                }
          } );
          // //////////////////////////////////////////////////////////////////////
          te_d.setOnAction ( new EventHandler < ActionEvent > ( ) {
                @Override
                public void handle ( ActionEvent e ) {
                     ctx.setFont ( Font.font ( "Arial", FontWeight.BOLD, 15 ) );
                     ctx.setFill ( Color.BLUE );
                     ctx.fillText ( "IMPRIMINDO O ARRAY", 250, 110 );
                     if ( k == 1 ) {
                          Alert alert = new Alert ( AlertType.INFORMATION );
                          alert.setTitle ( "Atenção" );
                          alert.setHeaderText ( null );
                          alert.setContentText ( "O array já foi imprimido" );
                          alert.showAndWait ( );
                          return;
                     }
                     for ( i = 1; i <= n; i++ ) {
                          vet [ a ] = i;
                          a++;
                     }
                     for ( i = 0; i < n; i++ ) {
                          str = str + vet [ i ];
                          y = vet [ i ];
                          if ( i == 19 )
                               str += ( "\n" );
                          if ( i == 39 )
                               str += ( "\n" );
                          if ( i == 59 )
                               str += ( "\n" );
                          if ( i == 79 )
                               str += ( "\n" );
                          str += ( "  " );
                          k = 1;
                     }
                     ctx.setFill ( Color.BLACK );
                     ctx.fillText ( str, 70, 140 );
                }
          } );
          // //////////////////////////////////////////////////////////////////////
          vis_vet.setOnAction ( new EventHandler < ActionEvent > ( ) {
                @Override
                public void handle ( ActionEvent e ) {
                     if ( y == 0 ) {
                          Alert alert = new Alert ( AlertType.INFORMATION );
                          alert.setTitle ( "Atenção" );
                          alert.setHeaderText ( null );
                          alert.setContentText ( "O array ainda não foi gerado" );
                          alert.showAndWait ( );
                          return;
                     }
                     if ( x == 1 ) {
                          Alert alert = new Alert ( AlertType.INFORMATION );
                          alert.setTitle ( "Atenção" );
                          alert.setHeaderText ( null );
                          alert.setContentText ( "O array já foi embaralhado" );
                          alert.showAndWait ( );
                          return;
                     }
                     if ( y >= 0 ) {
                          x = 1;
                          ctx.setFill ( Color.BLUE );
                          ctx.fillText ( "O ARRAY FOI EMBARALHADO", 250, 240 );
                          int temp, r;
                          Random random = new Random ( );
                          for ( i = 0; i < n; i++ ) {
                               r = random.nextInt ( n );
                               temp = vet [ i ];
                               vet [ i ] = vet [ r ];
                               vet [ r ] = temp;
                          }
                          for ( r = 0; r < n; r++ ) {
                               str_2 = str_2 + vet [ r ];
                               if ( r == 19 )
                                     str_2 += ( "\n" );
                               if ( r == 39 )
                                     str_2 += ( "\n" );
                               if ( r == 59 )
                                     str_2 += ( "\n" );
                               if ( r == 79 )
                                     str_2 += ( "\n" );
                               str_2 += ( "  " );
                          }
                          ctx.setFill ( Color.BLACK );
                          ctx.fillText ( str_2, 70, 270 );
                     }
                }
          } );
          vis_vet_1.setOnAction ( new EventHandler < ActionEvent > ( ) {
                @Override
                public void handle ( ActionEvent e ) {
                     Alert alert = new Alert ( AlertType.INFORMATION );
                     alert.setTitle ( "Atenção" );
                     alert.setHeaderText ( null );
                     alert.setContentText ( "Programa criado por Samuel Lima" );
                     alert.showAndWait ( );
                }
          } );
          // //////////////////////////////////////////////////////////////////////
          exd.setAccelerator ( new KeyCodeCombination ( KeyCode.E,
                     KeyCombination.CONTROL_DOWN ) );
          te_d.setAccelerator ( new KeyCodeCombination ( KeyCode.C,
                     KeyCombination.CONTROL_DOWN ) );
          vis_vet.setAccelerator ( new KeyCodeCombination ( KeyCode.D,
                     KeyCombination.CONTROL_DOWN ) );
          vis_vet_1.setAccelerator ( new KeyCodeCombination ( KeyCode.F,
                     KeyCombination.CONTROL_DOWN ) );
          primaryStage.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.