terça-feira, 10 de abril de 2018

JavaFX - adicionando ícones em itens de menu

Uma barra de menu sempre é adicionada na parte superior
da janela gráfica de um programa para destacar a visibilidade

ao usuário, mas isto não é bem uma regra, ela pode ser
colocada em qualquer outro lugar da interface.
Através de um menu podemos abrir novas janelas,
novos stages, invocar métodos e classes de qualquer
parte de nosso programa.
Na verdade um menu é um lugar próprio para que funções
que não precisem estar visíveis o tempo todo seja chamado
no momento solicitado pelo usuário.
Neste exemplo estamos ensinando como adicionar ícones
em itens de menu, e isto é uma prática fantástica
do javaFX que não se intimida a nenhuma outra API
de nenhuma outra linguagem de programação.


 Veja abaixo imagens do programa em execução:  








Veja abaixo um vídeo com o programa funcionando:



Veja abaixo o código do programa:


import java.io.FileInputStream;

import java.io.FileNotFoundException;
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.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
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 javafx.scene.image.Image;
import javafx.scene.image.ImageView;
////////////////////////////////////////////////////////////////////////////////
public class PROJETO extends Application {
     BorderPane root = new BorderPane ( );
     Scene scene = new Scene ( root, 640, 350, Color.WHITE );
     Canvas canvas = new Canvas ( 640, 350 );
     GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     MenuBar menuBar = new MenuBar ( );
     Menu menu = new Menu           ( "Setas" );
     MenuItem left = new MenuItem   ( "Cima" );
     MenuItem right = new MenuItem  ( "Direita" );
     MenuItem top = new MenuItem    ( "Esquerda" );
     MenuItem bottom = new MenuItem ( "Baixo" );
     EventHandler < ActionEvent > action = changeTabPlacement ( );
     // /////////////////////////////////////////////////////////////////////////
     public void Informe ( ) {      
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "Por: ", 250, 265 );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Samuel Lima", 280, 265 );
         ctx.setFill ( Color.BLACK );
         ctx.fillText ( "sa_sp10@hotmail.com", 250, 280 );
         ctx.setFill ( Color.RED );
         ctx.fillText ( " MUITO OBRIGADO", 280, 320 );
     }
     // /////////////////////////////////////////////////////////////////////////
     private EventHandler < ActionEvent > changeTabPlacement ( ) {
         return new EventHandler < ActionEvent > ( ) {
              public void handle ( ActionEvent event ) {
                   ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 32 ) );
                   MenuItem mItem = ( MenuItem ) event.getSource ( );
                   String side = mItem.getText ( );
                   // Coluna, linha, comprimento, altura
                   ctx.clearRect ( 220, 155, 330, 50 );
                   ctx.setFill ( Color.BLUE );
                   if ( "Esquerda".equalsIgnoreCase ( side ) ) {              
                        ctx.fillText ( "Seta esquerda", 230, 185 );
                   } else if ( "Direita".equalsIgnoreCase ( side ) ) {
                        ctx.fillText ( "Seta direita", 230, 185 );
                   } else if ( "Cima".equalsIgnoreCase ( side ) ) {
                        ctx.fillText ( "Seta pra cima", 230, 185 );
                   } else if ( "Baixo".equalsIgnoreCase ( side ) ) {
                        ctx.fillText ( "Seta pra baixo", 230, 185 );
                   }
              }
         };
     }
     // /////////////////////////////////////////////////////////////////////////
     public void Setas_Direcionais ( ) throws FileNotFoundException {
         left.setOnAction ( action );
         menu.getItems ( ).add ( left );
         right.setOnAction ( action );
         menu.getItems ( ).add ( right );
         top.setOnAction ( action );
         menu.getItems ( ).add ( top );
         bottom.setOnAction ( action );
         menu.getItems ( ).add ( bottom );
         // Imagens de 32 x 32.
         Image image_1 = new Image ( new FileInputStream (
                   "H:\\eclipse - luna java\\PROJETOS\\PROJETO\\src\\Foto\\Cima.png" ) );
         Image image_2 = new Image ( new FileInputStream (
                   "H:\\eclipse - luna java\\PROJETOS\\PROJETO\\src\\Foto\\Direita.png" ) );
         Image image_3 = new Image ( new FileInputStream (
                   "H:\\eclipse - luna java\\PROJETOS\\PROJETO\\src\\Foto\\Esquerda.png" ) );
         Image image_4 = new Image ( new FileInputStream (
                   "H:\\eclipse - luna java\\PROJETOS\\PROJETO\\src\\Foto\\Baixo.png" ) );
         left.setGraphic (   new ImageView ( image_1 ) );
         right.setGraphic (  new ImageView ( image_2 ) );
         top.setGraphic (    new ImageView ( image_3 ) );
         bottom.setGraphic ( new ImageView ( image_4 ) );
     }
     // /////////////////////////////////////////////////////////////////////////
     public void start ( Stage stage ) throws FileNotFoundException {
         stage.setTitle ( "JAVAFX - ADICIONANDO ÍCONES EM MENU" );
         // Criando moldura e aplicando efeitos
         root.setStyle ( "-fx-padding: 5;" + "-fx-border-style: solid inside;"
                   + "-fx-border-width: 12;" + "-fx-border-insets: 5;"
                   + "-fx-border-radius: 5;" + "-fx-border-color: darkblue;" );
         ctx.setFont ( Font.font ( "Arial", FontWeight.BOLD, 15 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - ADICIONANDO ÍCONES EM MENU", 170, 80 );
         Setas_Direcionais ( );
         Informe ( );
         menuBar.prefWidthProperty ( ).bind ( stage.widthProperty ( ) );
         root.getChildren ( ).addAll ( canvas );
         root.setTop ( menuBar );
         menuBar.getMenus ( ).addAll ( menu );
         stage.setScene ( scene );
         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.