domingo, 13 de novembro de 2016

Javafx - imprimindo e pesquisando em array de inteiros

Pesquisar valores dentro de um array é tarefa fácil
para os amantes de java, a linguagem oferece diversos
tipos de arrays que são usados em casos específicos,
neste aqui, o array foi preenchido por um contador,
e imprimido numa janela gráfica em javafx, onde toda
interação com o usuário é feita por caixa de diálogo.
A pesquisa é feita através do método Arrays.binarySearch (int [] a, int),
 e algumas conversões de tipos foram feitas num procedimento
obrigatório para a impressão nas caixas.

Veja abaixo algumas 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.control.TextInputDialog;
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.Arrays;

public class PROJETO extends Application {
     String    str       = "";
     String    str_2;
     int       i, n = 100, a = 0;
     int       vet[] = new int [ n ];
     @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: IMPRIMIR E PESQUISAR", 220, 80 );
          ctx.setLineWidth ( 22.0 );
          ctx.setStroke ( Color.BLUE );
          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: IMPRIMIR E PESQUISAR" );
          ///////////////////////////////////////////////////////////////////////
          ctx.setFont ( Font.font ( "Arial", FontWeight.BOLD, 15 ) );
          ctx.setFill ( Color.BLUE );
          ctx.fillText ( "IMPRIMINDO O ARRAY", 250, 110 );
          for ( i = 1; i <= n; i++ ) {
                vet [ a ] = i;
                a++;
          }
          for ( i = 0; i < n; i++ ) {
                if ( i == 20 )
                     str += ( "\n" );
                if ( i == 40 )
                     str += ( "\n" );
                if ( i == 60 )
                     str += ( "\n" );
                if ( i == 80 )
                     str += ( "\n" );
                str += ( "  " );
                str = str + vet [ i ];
                System.out.printf ( " " );
          }
          ctx.setFill ( Color.BLACK );
          ctx.fillText ( str, 70, 140 );
          //////////////////////////////////////////////////////////////////////
          MenuBar m_nu_1 = new MenuBar ( );
          Menu m_nu = new Menu ( "Arq" );
          MenuItem exd = new MenuItem ( "Sair" );
          MenuItem te_d = new MenuItem ( "Pesquisar" );
          m_nu.getItems ( ).addAll ( te_d, exd );
          ///////////////////////////////////////////////////
          m_nu_1.getMenus ( ).add ( m_nu );
          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 );
                     TextInputDialog dialogoNome = new TextInputDialog ( );
                     dialogoNome.setTitle ( "Inserir número" );
                     dialogoNome.setHeaderText ( "Entre com um número " );
                     dialogoNome.setContentText ( "Número: " );
                     dialogoNome.showAndWait ( ).ifPresent ( v -> str_2 = v );
                     Alert alert = new Alert ( AlertType.INFORMATION );
                     alert.setTitle ( "Atenção" );
                     alert.setHeaderText ( null );
                     int r = Integer.parseInt ( str_2 );// convertendo string para
                                                                    // int
                     int index = Arrays.binarySearch ( vet, r );
                     if ( index == -1 || index == -101 ) {
                          alert.setContentText ( "\nO número " + str_2
                                     + " não foi encontrado no array" );
                          alert.showAndWait ( );
                          return;
                     } else {
                          String st = Integer.toString ( index );// convertendo int
                          // para string
                          alert.setContentText ( "\nO número " + str_2
                                     + " foi encontrado\n na posição " + st
                                     + " do array " );
                          alert.showAndWait ( );
                     }
                }
          } );
          ////////////////////////////////////////////////////////////////////////
          exd.setAccelerator ( new KeyCodeCombination ( KeyCode.E,
                     KeyCombination.CONTROL_DOWN ) );
          te_d.setAccelerator ( new KeyCodeCombination ( KeyCode.C,
                     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.