Le Tutoriel de JavaFX MenuButton et SplitMenuButton

View more categories:

1- JavaFX MenuButton & SplitMenuButton

MenuButton est un bouton qui lorsqu'il est cliqué, il ne remplit aucune autre action que pour afficher / cacher un menu contient MenuItem. Pour cette raison, contrairement à la normale   JavaFX Button, il n'ya aucune propriété que vous pouvez définir.

MenuButton

Lorsque les utilisateurs cliquent sur MenuButton, un menu affiche, les éléments qui peuvent être de type MenuItem, CheckMenuItem, RadioMenuItem ou SeparatorMenuItem. Et vous pouvez gérer les événements lorsque l'utilisateur clique sur les éléments, fondamentalement  il n'y a aucune différence entre MenuButton et un Menu normal .

SplitMenuButton

MenuButton que SplitMenuButton.
SplitMenuButton très semblable à un MenuButton, et il est le même que d'un Button, il vous permet de monter une action lorsque l'utilisateur clique sur la gauche. Notez SplitMenuButton divisé en deux parties gauche et à droite. Lorsque les utilisateurs cliquent sur la gauche, il agit comme un Button, lorsque les utilisateurs cliquent sur le côté droit, il agit comme un MenuButton.

2- Exemple avec JavaFX MenuButton

MenuButtonDem.java
package org.o7planning.javafx.menubutton;

import java.io.InputStream;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;

public class MenuButtonDemo extends Application {

   // resourcePath: "/org/o7planning/javafx/icon/flag-vi.png"
   private ImageView getIcon(String resourcePath) {
       InputStream input //
               = this.getClass().getResourceAsStream(resourcePath);
       Image image = new Image(input);
       return new ImageView(image);
   }

   @Override
   public void start(Stage primaryStage) throws Exception {

       ImageView imageViewVI = this.getIcon("/org/o7planning/javafx/icon/flag-vi.png");
       ImageView imageViewEN = this.getIcon("/org/o7planning/javafx/icon/flag-en.png");
       ImageView imageViewIN = this.getIcon("/org/o7planning/javafx/icon/flag-in.png");

       // Create MenuItems
       MenuItem menuItemVI = new MenuItem("Vietnamese", imageViewVI);
       MenuItem menuItemEN = new MenuItem("English", imageViewEN);
       MenuItem menuItemIN = new MenuItem("India", imageViewIN);

       ImageView imageViewLang = this.getIcon("/org/o7planning/javafx/icon/language.png");

       // Create a MenuButton with Text & Icon & 3 Items
       MenuButton menuButton = new MenuButton("Languages", imageViewLang, //
               menuItemVI, menuItemEN, menuItemIN);

       FlowPane root = new FlowPane();
       root.setPadding(new Insets(10));
       root.setVgap(5);
       root.setHgap(5);

       root.getChildren().addAll(menuButton);

       Scene scene = new Scene(root, 320, 150);

       primaryStage.setTitle("JavaFX MenuButton (o7planning.org)");
       primaryStage.setScene(scene);
       primaryStage.show();
   }

   public static void main(String[] args) {
       Application.launch(args);
   }

}

3- Exemple avec JavaFX SplitMenuButton

SplitMenuButtonDemo.java
package org.o7planning.javafx.menubutton;

import java.io.InputStream;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.MenuItem;
import javafx.scene.control.SplitMenuButton;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;

public class SplitMenuButtonDemo extends Application {

    private int count = 1;

    // resourcePath: "/org/o7planning/javafx/icon/flag-vi.png"
    private ImageView getIcon(String resourcePath) {
        InputStream input //
                = this.getClass().getResourceAsStream(resourcePath);
        Image image = new Image(input);
        return new ImageView(image);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {

        Label label = new Label();

        ImageView imageViewVI = this.getIcon("/org/o7planning/javafx/icon/flag-vi.png");
        ImageView imageViewEN = this.getIcon("/org/o7planning/javafx/icon/flag-en.png");
        ImageView imageViewIN = this.getIcon("/org/o7planning/javafx/icon/flag-in.png");

        // Create MenuItems
        MenuItem menuItemVI = new MenuItem("Vietnamese", imageViewVI);
        MenuItem menuItemEN = new MenuItem("English", imageViewEN);
        MenuItem menuItemIN = new MenuItem("India", imageViewIN);

        ImageView imageViewLang = this.getIcon("/org/o7planning/javafx/icon/language.png");

        // Create a MenuButton with 3 Items
        SplitMenuButton splitMenuButton = new SplitMenuButton(menuItemVI, menuItemEN, menuItemIN);

        splitMenuButton.setText("Language");
        splitMenuButton.setGraphic(imageViewLang);

        // Handling when the user clicks on the left side of SplitMenuButton.
        splitMenuButton.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                label.setText("Clicked " + count++);
            }
        });

        FlowPane root = new FlowPane();
        root.setPadding(new Insets(10));
        root.setVgap(5);
        root.setHgap(5);

        root.getChildren().addAll(splitMenuButton, label);

        Scene scene = new Scene(root, 320, 150);

        primaryStage.setTitle("JavaFX SplitMenuButton (o7planning.org)");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        Application.launch(args);
    }

}

View more categories: