Руководство JavaFX MenuButton и SplitMenuButton
1. JavaFX MenuButton & SplitMenuButton
MenuButton это кнопка, когда мы на нее нажимаем, она не выполняет никаких других действий чем более показать / скрыть меню, которая содержит MenuItem. По этой причине, не похоже на обычный JavaFXButton, не имеет никаких атрибутов действий, которые можно определить.
MenuButton
Когда пользователь нажимает на кнопку MenuButton, отображается меню, Item которого могут быть вида MenuItem, CheckMenuItem, RadioMenuItem или SeparatorMenuItem. И вы можете обрабатывать события, когда пользователь нажимает на item. в основном MenuButton не отличается от обычного Menu.
SplitMenuButton
MenuButton vs SplitMenuButton.
SplitMenuButton очень похож на MenuButton, и так же похож на Button - это позволяет вам прикреплять действие, когда пользователь нажимает кнопку на левой стороне. Заметьте, что SplitMenuButton делится на две части слева и справа. Когда пользователь нажимает на левой стороне он действует как Button, когда пользователь нажимает кнопку на правой стороне, он действует как MenuButton
2. Пример с 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. Пример с 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);
}
}
Руководства JavaFX
- Откройте новое окно (window) в JavaFX
- Руководство JavaFX ChoiceDialog
- Руководство JavaFX Alert Dialog
- Руководство JavaFX TextInputDialog
- Установите e(fx)clipse для Eclipse (JavaFX Tooling)
- Установите JavaFX Scene Builder для Eclipse
- Руководство JavaFX для начинающих - Hello JavaFX
- Руководство JavaFX FlowPane Layout
- Руководство JavaFX TilePane Layout
- Руководство JavaFX HBox, VBox Layout
- Руководство JavaFX BorderPane Layout
- Руководство JavaFX AnchorPane Layout
- Руководство JavaFX TitledPane
- Руководство JavaFX Accordion
- Руководство JavaFX ListView
- Руководство JavaFX Group
- Руководство JavaFX ComboBox
- Руководство JavaFX Transformations
- Эффекты (effects) в JavaFX
- Руководство JavaFX GridPane Layout
- Руководство JavaFX StackPane Layout
- Руководство JavaFX ScrollPane
- Руководство JavaFX WebView и WebEngine
- Руководство JavaFX HTMLEditor
- Руководство JavaFX TableView
- Руководство JavaFX TreeView
- Руководство JavaFX TreeTableView
- Руководство JavaFX Menu
- Руководство JavaFX ContextMenu
- Руководство JavaFX Image и ImageView
- Руководство JavaFX Label
- Руководство JavaFX Hyperlink
- Руководство JavaFX Button
- Руководство JavaFX ToggleButton
- Руководство JavaFX RadioButton
- Руководство JavaFX MenuButton и SplitMenuButton
- Руководство JavaFX TextField
- Руководство JavaFX PasswordField
- Руководство JavaFX TextArea
- Руководство JavaFX Slider
- Руководство JavaFX Spinner
- Руководство JavaFX ProgressBar и ProgressIndicator
- Руководство JavaFX ChoiceBox
- Руководство JavaFX Tooltip
- Руководство JavaFX DatePicker
- Руководство JavaFX ColorPicker
- Руководство JavaFX FileChooser и DirectoryChooser
- Руководство JavaFX PieChart
- Руководство JavaFX AreaChart и StackedAreaChart
- Руководство JavaFX BarChart и StackedBarChart
- Руководство JavaFX Line
- Руководство JavaFX Rectangle и Ellipse
Show More