terça-feira, 30 de janeiro de 2018

Javafx - array bidimensional invisível II

Preenchemos um array bidimensional
de inteiros através de um contador,
porém seus elementos não são imprimidos

imediatamente, mas quando um número
é introduzido no campo do textfield,
e se este número pertence ao array,
a ocorrência deste número é imprimida
corretamente na sua posição onde esta
localizado invisivelmente.
Que ver como isto funciona?
Teste agora mesmo meu programa.


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



 Veja abaixo o código do programa:


import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.Button;
import javafx.stage.Stage;
import javafx.scene.paint.Color;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.event.EventHandler;
import javafx.scene.control.TextField;
import javafx.geometry.Insets;
import javafx.scene.layout.HBox;
import javafx.scene.input.KeyEvent;
import java.awt.Toolkit;
import java.util.function.UnaryOperator;
import javafx.scene.control.TextFormatter;
import javafx.scene.control.TextFormatter.Change;
////////////////////////////////////////////////////////////////////////////////
public class PROJETO extends Application {
    public static int TAM = 10, pesq;
    static Canvas canvas = new Canvas ( 620, 350 );
    static GraphicsContext ctx = canvas.getGraphicsContext2D ( );
    static Pane ro_ot = new Pane ( );
    static Scene sce_ne = new Scene ( ro_ot, 620, 350 );
    static Button btn_1 = new Button ( "FECHAR" );
    static TextField textField_1 = new TextField ( );
    static HBox hbox_1 = new HBox ( textField_1 );
    // ////////////////////////////////////////////////////////////////////////
    public static void limitTextField ( TextField textField, int limit ) {
        UnaryOperator < Change > textLimitFilter = change -> {
             if ( change.isContentChange ( ) ) {
                  int newLength = change.getControlNewText ( ).length ( );
                  if ( newLength > limit ) {
                       String trimmedText = change.getControlNewText ( )
                                .substring ( 0, limit );
                       change.setText ( trimmedText );
                       int oldLength = change.getControlText ( ).length ( );
                       change.setRange ( 0, oldLength );
                  }
             }
             return change;
        };
        textField.setTextFormatter ( new TextFormatter < Object > (
                  textLimitFilter ) );
    }
    // /////////////////////////////////////////////////////////////////////////
    public static int Pesquisa ( int Vet [ ] [ ] ) {
        hbox_1.setPadding ( new Insets ( 290, 0, 10, 170 ) );
        // Abaixo ajustamos o total de colunas do TextField
        textField_1.setPrefColumnCount ( 2 );
        textField_1.setPromptText ( "pesq" );
        ctx.setFont ( Font.font ( "Tahoma", FontWeight.NORMAL, 12 ) );
        ctx.setFill ( Color.BLACK );
        ctx.fillText ( "Pesquisa", 170, 280 );
        textField_1.setOnKeyPressed ( new EventHandler < KeyEvent > ( ) {
             @Override
             public void handle ( KeyEvent event ) {
                  limitTextField ( textField_1, 3 );
                  if ( event.getCode ( ) == KeyCode.ENTER ) {
                       ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
                       ctx.setFill ( Color.BLUE );
                       // convertendo string para inteiro
                       pesq = Integer.parseInt ( textField_1.getText ( ) );
                       if ( Integer.parseInt ( textField_1.getText ( ) ) >= 0
                                && Integer.parseInt ( textField_1.getText ( ) ) <= 100 ) {
                           Arr ( Vet );
                       }
                  }
             }
        } );
        ro_ot.getChildren ( ).add ( hbox_1 );
        return 0;
    }
    // /////////////////////////////////////////////////////////////////////////
    public static Node But_ton_3 ( ) {
        btn_1.setPrefWidth ( 100 );// Largura do botão
        btn_1.setLayoutX ( 267 );// Posição do botão coluna
        btn_1.setPrefHeight ( 20 );// altura do botão
        btn_1.setLayoutY ( 300 );// //Posição do botão linha
        btn_1.setStyle ( "-fx-padding: 1;" + "-fx-border-style: solid inside;"
                  + "-fx-border-width: 2;" + "-fx-border-insets: 1;"
                  + "-fx-border-radius: 1;" + "-fx-border-color: blue;"
                  + "-fx-font-style: italic;" + "-fx-font-family: Consolas;" );
        btn_1.setOnKeyPressed ( e -> {
             if ( e.getCode ( ) == KeyCode.ENTER ) {
                  System.exit ( 0 );
             }
        } );
        return btn_1;
    }
    // /////////////////////////////////////////////////////////////////////////
    public static void Arr ( int Vet [ ] [ ] ) {
        int i, j = 0;
        StringBuilder str = new StringBuilder ( );
        ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 15 ) );
        ctx.setFill ( Color.BLUE );
        ctx.fillText ( "Imprimindo abaixo o array de inteiros", 190, 80 );
        ctx.setFont ( Font.font ( "Arial", FontWeight.BOLD, 14 ) );
        for ( i = 0; i < TAM; i++ ) {
             str.append ( "\n" );
             for ( j = 0; j < TAM; j++ ) {         
                  str.append ( "\t" );
                  if ( Vet [ i ] [ j ] == pesq ) {
                       if ( Vet [ i ] [ j ] >= 0 && Vet [ i ] [ j ] <= 9 )
                           str.append ( "0" );
                       Toolkit.getDefaultToolkit ( ).beep ( );
                       str.append ( Vet [ i ] [ j ] );
                  }
             }
        }
        ctx.setFill ( Color.BLACK );
        ctx.fillText ( " " + str, 138, 100 );
    }
    // ////////////////////////////////////////////////////////////////////////
    public void start ( Stage stage ) {
        ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 15 ) );
        stage.setTitle ( "JAVAFX - ARRAY BIDIMENSIONAL INVISÍVEL" );
        // Criando moldura e dando efeitos
        ro_ot.setStyle ( "-fx-padding: 2;" + "-fx-border-style: solid inside;"
                  + "-fx-border-width: 18;" + "-fx-border-insets: 2;"
                  + "-fx-border-radius: 2;" + "-fx-border-color: red;" );
        ctx.setFill ( Color.RED );
        ctx.fillText ( "JAVAFX - ARRAY BIDIMENSIONA INVISÍVEL", 170, 50 );
         int a = 0, b = 0, i, j = 0, n = 100;
       
         int [ ] [ ] Vet = new int [ TAM  ] [ TAM ];
        int [ ] V = new int [ n  ];
        for ( i = 1; i <= n; i++ ) {
        V [ a ] = i;
        a++;
        }   
        ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 14 ) );    
        for ( i = 0; i < TAM; i++ ) {
             for ( j = 0; j < TAM; j++ ) {
                  Vet [ i ] [ j ] = V [ b ];
                  b++;                
             }
        }
        Arr ( Vet );
        Pesquisa ( Vet );
        But_ton_3 ( );
        ro_ot.getChildren ( ).addAll ( canvas, btn_1 );
        stage.setScene ( sce_ne );
        stage.show ( );
    }
    // /////////////////////////////////////////////////////////////////////////
    public static void main ( String [ ] args ) {
        Application.launch ( args );
    }
}

Nenhum comentário:

Postar um comentário

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