segunda-feira, 16 de abril de 2018

JavaFX - criando duplo menu

Já que você aprendeu a criar menus,
itens de menus, colocar ícones em itens
de menus, criar menus personalizados,
abrir outras janelas por um item de menu,

utilizar combinações de teclas para abrir
itens de menu, falta agora muito pouco para
concluirmos o término destes tutoriais que
estamos fazendo em modo prático sobre menus.
Neste exemplo mostro como criar um duplo menu,
mas você pode ir mais além, mostre seu valor,
e suas habilidades, crie quantos menus forem
necessários para que seu programa se mostre
num aspecto profissional.
 

 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 javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.BorderPane;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
import javafx.scene.input.KeyCode;

// /////////////////////////////////////////////////////////////////////////////
public class PROJETO extends Application {
     public Canvas canvas = new Canvas ( 500, 300 );
     public GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     BorderPane root = new BorderPane ( );
     Scene scene = new Scene ( root, 500, 300 );
     //Barra de menu ( MenuBar ).
     MenuBar menubar = new MenuBar ( );
     //Menu menu_1
     Menu menu_1 = new Menu ( "Arq_1" );
     //Menu menu_2
     Menu menu_2 = new Menu ( "Arq_2" );
     //Itens de menu para menu_1
     MenuItem jan_1 = new MenuItem ( "Janela_1" );
     MenuItem jan_2 = new MenuItem ( "Janela_2" );
     MenuItem exit_1 = new MenuItem ( "Sair" );
     //Itens de menu para menu_2
     MenuItem jan_3 = new MenuItem ( "Janela_3" );
     MenuItem jan_4 = new MenuItem ( "Janela_4" );
     MenuItem exit_2 = new MenuItem ( "Sair" );   
     // /////////////////////////////////////////////////////////////////////////
     public void Informe ( GraphicsContext ctx ) {      
         ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "Por: ", 180, 235 );
         ctx.setFill ( Color.BLUE );
         ctx.fillText ( "Samuel Lima", 210, 235 );
         ctx.setFill ( Color.BLACK );
         ctx.fillText ( "sa_sp10@hotmail.com", 180, 250 );
         ctx.setFill ( Color.RED );
         ctx.fillText ( " MUITO OBRIGADO", 200, 275 );
         ctx.setFill ( Color.BLACK );
         //Usando fonte em italic
         ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
                   FontPosture.ITALIC, 26 ) );
     }
     // /////////////////////////////////////////////////////////////////////////
     public void Menu ( Stage stage ) {
         //Adicionando itens em menu_1
         menu_1.getItems ( ).addAll ( jan_1, jan_2, exit_1 );
         //Adicionando itens em menu_2
         menu_2.getItems ( ).addAll ( jan_3, jan_4, exit_2 );
         //Adicionando menu_1 e menu_2 na barra de menu
         menubar.getMenus ( ).addAll ( menu_1, menu_2 );
        ////////////////////////////////////////////////////////////////////////
         //Eventos para menu_1
         ctx.setFill ( Color.BLUE );
         exit_1.setOnAction ( new EventHandler < ActionEvent > ( ) {
              @Override
              public void handle ( ActionEvent e ) {
                   stage.close ( );
              }
         } );
         jan_1.setOnAction ( new EventHandler < ActionEvent > ( ) {
              @Override
              public void handle ( ActionEvent e ) {
                   // Coluna, linha, comprimento, altura
                   ctx.clearRect ( 120, 165, 330, 50 );
                   ctx.fillText ( "Janela_1 em menu_1", 130, 185 );
              }
         } );
         jan_2.setOnAction ( new EventHandler < ActionEvent > ( ) {
              @Override
              public void handle ( ActionEvent e ) {
                   // Coluna, linha, comprimento, altura
                   ctx.clearRect ( 120, 165, 330, 50 );
                   ctx.fillText ( "Janela_2 em menu_1", 130, 185 );
              }
         } );
     ////////////////////////////////////////////////////////////////////////
         //Eventos para menu_2
         exit_2.setOnAction ( new EventHandler < ActionEvent > ( ) {
              @Override
              public void handle ( ActionEvent e ) {
                   stage.close ( );
              }
         } );
         jan_3.setOnAction ( new EventHandler < ActionEvent > ( ) {
              @Override
              public void handle ( ActionEvent e ) {
                   // Coluna, linha, comprimento, altura
                   ctx.clearRect ( 120, 165, 330, 50 );
                   ctx.fillText ( "Janela_3 em menu_2", 130, 185 );
              }
         } );
         jan_4.setOnAction ( new EventHandler < ActionEvent > ( ) {
              @Override
              public void handle ( ActionEvent e ) {
                   // Coluna, linha, comprimento, altura
                   ctx.clearRect ( 120, 165, 330, 50 );
                   ctx.fillText ( "Janela_4 em menu_2", 130, 185 );
              }
         } );    
         //Combinações de teclas para menu_1
         exit_1.setAccelerator ( new KeyCodeCombination ( KeyCode.E,
                   KeyCombination.CONTROL_DOWN ) );
         jan_1.setAccelerator ( new KeyCodeCombination ( KeyCode.C,
                   KeyCombination.CONTROL_DOWN ) );
         jan_2.setAccelerator ( new KeyCodeCombination ( KeyCode.D,
                   KeyCombination.CONTROL_DOWN ) );
     ////////////////////////////////////////////////////////////////////////
         //Combinações de teclas para menu_2
         exit_2.setAccelerator ( new KeyCodeCombination ( KeyCode.F,
                   KeyCombination.CONTROL_DOWN ) );
         jan_3.setAccelerator ( new KeyCodeCombination ( KeyCode.G,
                   KeyCombination.CONTROL_DOWN ) );
         jan_4.setAccelerator ( new KeyCodeCombination ( KeyCode.H,
                   KeyCombination.CONTROL_DOWN ) );
     }
     // /////////////////////////////////////////////////////////////////////////
     public void start ( Stage stage ) {
         stage.setTitle ( "JAVAFX - CRIANDO DUPLO MENU" );
         //Usando fonte em italic
         ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
                   FontPosture.ITALIC, 15 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - CRIANDO DUPLO MENU", 130, 80 );
         // Criando uma moldura na janela
         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: cyan;" );
         Menu ( stage );
         Informe ( ctx );
         root.getChildren ( ).add ( canvas );
         root.setTop ( menubar );
         stage.setScene ( scene );
         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.