domingo, 1 de abril de 2018

Javafx - a classe Button

Como tudo surpreende em javaFx,
a classe Button não poderia ser diferente.
Ao clicar num botão, eventos são acionados
dando a ideia de que um botão real foi pressionado.
O melhor disto tudo, é que esta classe foi estendida
a classe Labeled, para que um texto pudesse ser
exibido no próprio botão junto com uma imagem,
ou individualmente ou qualquer um dos dois.


Podemos usar os seguintes construtores
para criar um botão no JavaFX.
//Criando botão sem legenda de texto.
Button btn_1 = new Button ( );
//Criando botão com legenda de texto.
Button btn_2 = new Button ( "JavaFx" );
//Criando botão com legenda de texto e ícone
Image image = new Image ( getClass().getResourceAsStream ( "OK.png" ) );
Button button = new Button("OK", new ImageView( image ) );

Ainda podemos aplicar efeitos do pacote javafx.scene.effect

a um botão, neste exemplo, estamos aplicando o efeito
DropShadow ao botão "Palmeira_2.png",
e estilos CSS para mudar a aparência do botão.
Quando o botão "Palmeira_2.png" é pressionado,
o método setOnAction da classe Button dispara
o evento event exibindo o Label lbl:
"Campeão paulista 2008" e os créditos do autor
que sou eu mesmo, e ainda aplica um efeito
rotativo no próprio botão.
Se o botão fechar for acionado o programa
fecha imediatamente.

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


Imagem Palmeiras_2.png:


Veja abaixo o vídeo do programa:



Veja abaixo o código do programa:



import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.animation.RotateTransition;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
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.scene.control.Label;
import javafx.scene.effect.DropShadow;
import javafx.stage.Stage;
import javafx.scene.paint.Color;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.transform.Rotate;
import javafx.util.Duration;

public class PROJETO extends Application {
     public static Label lbl = new Label ( );
     public static Button btn_2 = new Button ( );
     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 DropShadow drop = new DropShadow ( );
     // /////////////////////////////////////////////////////////////////////////
     public static void Informe ( ) {
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "Por: ", 250, 275 );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Samuel Lima", 280, 275 );
         ctx.setFill ( Color.BLACK );
         ctx.fillText ( "sa_sp10@hotmail.com", 250, 290 );
     }
     // ////////////////////////////////////////////////////////////////////////
     public static Node Button_1 ( ) {
         btn_2.setPrefWidth ( 60 );// Largura do botão
         btn_2.setLayoutX ( 285 );// Posição do botão coluna
         btn_2.setPrefHeight ( 20 );// altura do botão
         btn_2.setLayoutY ( 200 );// //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: white;");
         btn_2.setEffect ( drop ); 
         btn_2.setOnAction ( new EventHandler < ActionEvent > ( ) {
              @Override
              public void handle ( ActionEvent event ) {
                   RotateTransition rotate = new RotateTransition ( );
                   // Definindo a duração da transição
                   rotate.setDuration ( Duration.millis ( 1000 ) );      
                   // Configurando o nó para a transição
                   rotate.setNode ( btn_2 );
                   // Ajustando o eixo da rotação
                   rotate.setAxis ( Rotate.Y_AXIS );
                   // Ajustando o ângulo da rotação
                   rotate.setByAngle ( 360 );
                   // Definindo a contagem de ciclos para a
                   // transição
                   rotate.setCycleCount ( 50 );
                   // Configurando o valor do reverso automático
                   // para falso
                   rotate.setAutoReverse ( false );        
                   drop.setOffsetX ( 2.0f );
                   drop.setOffsetY ( 3.0 );
                   drop.setColor ( Color.color ( 0.4, 0.4, 0.4 ) );
                   lbl.setEffect ( drop );    
                   //Determina o tipo e tamanho da fonte
                   lbl.setFont ( new Font ( "Cambria", 25 ) );
                   //Posiciona o label na horizontal
                   lbl.setLayoutX ( 265 );
                   //Posiciona o label na vertical
                   lbl.setLayoutY ( 100 );
                   //Aplica cor no rótulo
                   lbl.setTextFill ( Color.GREEN );
                   lbl.setText ( "Campeão paulista de 2008" );
                   lbl.setPrefWidth ( 120 );
                   lbl.setWrapText ( true );
                   rotate.play ( );
                   Informe ( );
              }
         } );
         return btn_2;
     }
     // ////////////////////////////////////////////////////////////////////////
     public static Node Click ( ) {
         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.setOnAction ( new EventHandler < ActionEvent > ( ) {
              @Override
              public void handle ( ActionEvent event ) {
                   System.exit ( 0 );
              }
         } );
         return btn_1;
     }
     // ////////////////////////////////////////////////////////////////////////
     public void start ( Stage stage ) throws FileNotFoundException {
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 15 ) );
         stage.setTitle ( "JAVAFX - A CLASSE BUTTON " );
         //Criando moldura e dando efeitos
         ro_ot.setStyle ( "-fx-padding: 5;" + "-fx-border-style: solid inside;"
                   + "-fx-border-width: 15;" + "-fx-border-insets: 5;"
                   + "-fx-border-radius: 5;" + "-fx-border-color: red;");          
         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - A CLASSE BUTTON", 220, 50 );
         //Endereço para abrir imagem
         Image image = new Image ( new FileInputStream (
                   "H:\\eclipse - luna java\\PROJETOS\\PROJETO\\src\\Foto\\Palmeiras_2.png" ) );
         btn_2.setGraphic ( new ImageView ( image ) );
         Click  ( );
         Button_1 ( );
         ro_ot.getChildren ( ).addAll ( canvas, btn_1, btn_2, lbl );
         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.