SplitMenuButton
A SplitMenuButton is a special button that is divided into two parts:
- Main button (left side) → performs a default action
- Dropdown arrow (right side) → shows more options
- 🧠 How to think about it
It’s like:
- 👉 “Do something quickly” OR
- 👉 “Choose a different option”
1️⃣ FXML Example
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.SplitMenuButton?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.layout.VBox?>
<VBox xmlns="http://javafx.com/javafx/17.0.2" xmlns:fx="http://javafx.com/fxml"
fx:controller="com.example.SplitMenuButtonController"
spacing="20" alignment="CENTER" style="-fx-padding: 20;">
<!-- SplitMenuButton -->
<SplitMenuButton fx:id="splitMenuButton" text="Choose Option">
<items>
<MenuItem fx:id="option1" text="Option 1"/>
<MenuItem fx:id="option2" text="Option 2"/>
<MenuItem fx:id="option3" text="Option 3"/>
</items>
</SplitMenuButton>
</VBox>
2️⃣ Controller Example
package com.example;
import javafx.fxml.FXML;
import javafx.scene.control.MenuItem;
import javafx.scene.control.SplitMenuButton;
public class SplitMenuButtonController {
@FXML
private SplitMenuButton splitMenuButton;
@FXML
private MenuItem option1, option2, option3;
@FXML
public void initialize() {
// Default button action
splitMenuButton.setOnAction(e -> {
System.out.println("Default button clicked!");
});
// MenuItem actions
option1.setOnAction(e -> System.out.println("Option 1 selected"));
option2.setOnAction(e -> System.out.println("Option 2 selected"));
option3.setOnAction(e -> System.out.println("Option 3 selected"));
}
}
✅ Explanation:
<SplitMenuButton>defines the button in FXML.<items>contains the dropdownMenuItems.- In the controller, you attach event handlers to both the button and each menu item.
- Clicking the main part triggers
splitMenuButton.setOnAction. - Clicking a menu item triggers its own action.