quinta-feira, 2 de fevereiro de 2017

JavaFX - pesquisa em array de string

Já que venho falando de array nos últimos posts de java,
é muito justo que agora eu mostre um exemplo de pesquisa
em seus valores, aliás querer saber se um item especificado
por uma entrada de dados, existe num array de string,
é um procedimento muito normal.
Uma rotina de código comandada por um laço for percorre
o array de string comparando cada valor com a string de entada,
procurando por igualdade em suas posições, até que encontre.
Quando encontrado, uma caixa de diálogo do javafx é acionada,
informando que a fruta que foi pesquisada está mesmo,
na imagem de fundo do programa.
Quando não encontra, o procedimento é parecido,
só que a mensagem da caixa de diálogo vem informando que
aquela fruta não está na imagem de fundo do programa.
Sobre a parte gráfica, que foi escolhida opcionalmente por mim,
Mostra a beleza de uma bela imagem que é carregada com os
recursos da impressionante biblioteca javafx, contando ainda
com um menu no estilo profissional com três opções,
que são: sobre, sair e pesquisar.

Veja abaixo imagens do programa em execução:













Veja abaixo o código do programa



import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
import javafx.stage.Stage;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
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.effect.DropShadow;
import javafx.scene.layout.BorderPane;

public class PROJETO extends Application {
     String    str_2;
     String    str_3;
     String    pesq;

     @Override
     public void start ( Stage stage ) throws FileNotFoundException {
         Image image = new Image (
                   new FileInputStream (
                             "C:\\Users\\Pedras_Vivas\\Desktop\\Frutas\\frutas_do_verão.PNG" ) );
         ImageView imageView = new ImageView ( image );
         BorderPane root = new BorderPane ( );
         imageView.setX ( 21 );
         imageView.setY ( 21 );
         imageView.setFitHeight ( 1035 );
         imageView.setFitWidth ( 780 );
         imageView.setPreserveRatio ( true );
         root.getChildren ( ).add ( imageView );
         // /////////////////////////////////////////////////////////////////////
         // BorderPane root = new BorderPane ( );
         Canvas canvas = new Canvas ( 824, 629 );
         GraphicsContext ctx = canvas.getGraphicsContext2D ( );
         ctx.setFont ( Font.font ( "Arial", FontWeight.BOLD, 30 ) );
         Scene scene = new Scene ( root, 819, 624 );
         ctx.setLineWidth ( 22.0 );
         ctx.setStroke ( Color.RED );
         ctx.strokeRect ( 10, 35, 800, 580 );
         stage.setTitle ( "ARRAY: PESQUISANDO STRING" );
         ctx.setFill ( Color.WHITE );
         DropShadow ds = new DropShadow ( );
         ds.setOffsetY ( 3.0f );
         ds.setColor ( Color.color ( 0.9f, 0.4f, 0.9f ) );
         ctx.setEffect ( ds );
         ctx.fillText ( "ARRAY: PESQUISANDO STRING", 200, 100 );
         // /////////////////////////////////////////////////////////////////////
         imageView.setPreserveRatio ( true );
         root.getChildren ( ).add ( canvas );
         stage.setScene ( scene );
         stage.show ( );
         // /////////////////////////////////////////////////////////////////////
         MenuBar m_nu_1 = new MenuBar ( );
         Menu m_nu = new Menu ( "Arq" );
         MenuItem exd = new MenuItem ( "Sair" );
         MenuItem te_d = new MenuItem ( "Sobre" );
         MenuItem pe_sq = new MenuItem ( "Pesquisar" );
         m_nu.getItems ( ).addAll ( te_d, exd, pe_sq );
         m_nu_1.getMenus ( ).add ( m_nu );
         root.setTop ( m_nu_1 );
         // /////////////////////////////////////////////////////////////////////
         exd.setOnAction ( new EventHandler < ActionEvent > ( ) {
              @Override
              public void handle ( ActionEvent e ) {
                   stage.close ( );
              }
         } );
         te_d.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 ( "Progrma criado por Samuel Lima" );
                   alert.showAndWait ( );
              }
         } );
         // //////////////////////////////////////////////////////////////////
         pe_sq.setOnAction ( new EventHandler < ActionEvent > ( ) {
              @Override
              public void handle ( ActionEvent e ) {
                   String [ ] Frutas
                       = { "Uva",
                            "Jabuticaba",
                            "Melão",
                            "Melancia",
                            "Morango",
                            "Maçã",
                            "Abacaxi",
                            "Carambola",
                            "Pera",
                            "Laranja" };
                   ctx.setFont ( Font.font ( "Arial", FontWeight.BOLD, 15 ) );
                   ctx.setFill ( Color.BLUE );
                   TextInputDialog dialogoNome = new TextInputDialog ( );
                   dialogoNome.setTitle ( "Pesquisar fruta" );
                   dialogoNome.setHeaderText ( "Entre com o nome de uma fruta " );
                   dialogoNome.setContentText ( "Fruta: " );
                   dialogoNome.showAndWait ( ).ifPresent ( v -> pesq = v );
                   Alert alert = new Alert ( AlertType.INFORMATION );
                   alert.setTitle ( "Atenção" );
                   alert.setHeaderText ( null );
                   boolean achou = false;
                   for ( String frutas : Frutas ) {
                        if ( frutas.equals ( pesq ) ) {
                            achou = true;
                        }
                   }
                   if ( achou ) {
                        alert.setContentText ( "\nA fruta " + pesq
                                 + " foi encontrada na imagem " );
                        alert.showAndWait ( );
                   } else {
                        alert.setContentText ( "\nA fruta " + pesq
                                 + " não foi encontrada na imagem " );
                        alert.showAndWait ( );
                   }
              }
         } );
         // /////////////////////////////////////////////////////////////////////
         exd.setAccelerator ( new KeyCodeCombination ( KeyCode.E,
                   KeyCombination.CONTROL_DOWN ) );
         te_d.setAccelerator ( new KeyCodeCombination ( KeyCode.C,
                   KeyCombination.CONTROL_DOWN ) );
         pe_sq.setAccelerator ( new KeyCodeCombination ( KeyCode.D,
                   KeyCombination.CONTROL_DOWN ) );
         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.