terça-feira, 9 de janeiro de 2018

Javafx - invocando valores aleatoriamente

Este interessante programa usa dois botões para chamar
duas vezes a teclar "ENTER" .
Na primeira chamada o array de inteiros tem todos os seus
elementos embaralhados, e na segunda, o programa escolhe
aleatoriamente um dos números contidos no array e lança
como limites dentro de um laço for para o total de elementos
embaralhados a imprimir.
Enquanto isto ocorre, uma variável contadora vai incrementando
a cada chamada da segunda tecla "ENTER", e quando ela
chega ao valor dez, a mensagem "Fim do programa" é imprimida
e pressionando mais uma vez a tecla "ENTER" o programa
é finalizado, veja agora mesmo como funciona.


Veja abaixo imagens 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.layout.Pane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.input.KeyCode;
import java.util.Random;

////////////////////////////////////////////////////////////////////////////////
public class PROJETO extends Application {
     static int c = 0, k = -1;
     static boolean w = false;
     public static int TAM = 10;
     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 ( "TECLE ENTER" );
     static Button btn_2 = new Button ( "TECLE ENTER" );
////////////////////////////////////////////////////////////////////////////
     public static int emblhar ( int vet [ ] ) {
         int i, temp, y;
         Random random = new Random ( );
         for ( i = 0; i < TAM; i++ ) {
              y = random.nextInt ( TAM );
              temp = vet [ i ];
              vet [ i ] = vet [ y ];
              vet [ y ] = temp;
         }
         return i;
     }
     // /////////////////////////////////////////////////////////////////////////
     public static Node But_ton_2 ( int vet [ ] ) {
         btn_2.setPrefWidth ( 100 );// Largura do botão
         btn_2.setLayoutX ( 267 );// Posição do botão coluna
         btn_2.setPrefHeight ( 20 );// altura do botão
         btn_2.setLayoutY ( 300 );// //Posição do botão linha      
         btn_2.setStyle ( "-fx-padding: 1;" + "-fx-border-style: solid inside;"
                   + "-fx-border-width: 2;" + "-fx-border-insets: 1;"
                   + "-fx-border-radius: 1;" + "-fx-border-color: red;"
                   + "-fx-font-style: italic;"
                   + "-fx-font-family: Consolas;"
                   );      
         btn_2.setOnKeyPressed ( e -> {
              StringBuilder st = new StringBuilder ( );
              int i;
              if ( e.getCode ( ) == KeyCode.ENTER ) {
                   emblhar ( vet );
                   ctx.setFill ( Color.BLUE );
                   ctx.fillText ( "Embaralhando abaixo o array de inteiros", 190, 140 );
                   for ( i = 0; i <= 9; i++ ) {
                        st.append ( vet [ i ] + "    " );          
                        ctx.setFill ( Color.RED );
                        ctx.fillText ( " " + st, 190, 170 );
                   }
                   w = true;
              }
              if ( w == true ){
                   btn_2.setDisable ( true ); 
                   But_ton_3 ( vet );
              }
              ro_ot.getChildren ( ).addAll ( btn_1 );
         } );
         return btn_2;
     }
     // /////////////////////////////////////////////////////////////////////////
     public static Node But_ton_3 ( int vet [ ] ) {
         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 -> {
              StringBuilder st = new StringBuilder ( );
              int a = 1, b, i;
              if ( e.getCode ( ) == KeyCode.ENTER ) {
                   c++;
                   System.out.print ( c );
                   if ( c == 11 ){
                        System.exit ( 0 );
                   }
                   a = emblhar ( vet );
                   for ( i = 0; i < 9; i++ ) {
                        // Coluna, linha, comprimento, altura
                        ctx.clearRect ( 190, 190, 300, 30 );
                        ctx.clearRect ( 190, 220, 300, 20 );
                        st = new StringBuilder ( );
                        a = 0;
                        a = vet [ i ];
                        st.append ( a  );
                   }
                   ctx.setFill ( Color.BLUE );
                   ctx.fillText (  "Vou imprimir ", 200, 200 );
                   ctx.setFill ( Color.RED );
                   ctx.fillText ( " " + st, 290, 200 );
                   ctx.setFill ( Color.BLUE );
                   ctx.fillText (  " elementos", 320, 200 );
                   st = new StringBuilder ( );
                   for ( b = 1; b <= a; b++ ) {
                        st.append ( vet [ b ] + "    " );        
                   }
                   ctx.setFill ( Color.RED );
                   ctx.fillText ( " " + st, 200, 230 );
                   ctx.clearRect ( 190, 250, 20, 20 );
                   ctx.setFill ( Color.RED );
                   ctx.fillText ( " " + c + "ª", 190, 260 );
                   ctx.setFill ( Color.BLACK );
                   ctx.fillText ( " impressão", 220, 260 );
                   if ( c == 10 ){
                        ctx.setFill ( Color.BLACK );
                        ctx.fillText ( "Fim do programa", 260, 290 );
                   }
              }
         } );
         return btn_1;
     }
     // ////////////////////////////////////////////////////////////////////////
     public void start ( Stage stage ) {
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 15 ) );
         stage.setTitle ( "JAVAFX - INVOCANDO VALORES ALEATORIAMENTE" );
         //Criando moldura e dando efeitos
         ro_ot.setStyle ( "-fx-padding: 5;" + "-fx-border-style: solid inside;"
                   + "-fx-border-width: 12;" + "-fx-border-insets: 5;"
                   + "-fx-border-radius: 5;" + "-fx-border-color: black;" );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - INVOCANDO VALORES ALEATORIAMENTE", 130, 50 );
         String st = " ";
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 15 ) );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Imprimindo abaixo o array de inteiros", 190, 80 );
         ctx.setFill ( Color.BLACK );
         int vet [ ] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
         int i;
         for ( i = 0; i < TAM; i++ ) {
              st += vet [ i ] + "    ";
         }
         ctx.setFill ( Color.RED );
         ctx.fillText ( st, 190, 110 );
         But_ton_2 ( vet );
         ro_ot.getChildren ( ).addAll ( canvas, btn_2 );
         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.