ToggleButton
ToggleButton in JavaFX. This one is very useful for creating on/off switches or selectable options.
1️⃣ What is ToggleButton?
ToggleButtonis like a normal button but maintains a selected state.- Clicking it toggles between selected (pressed) and unselected.
- Often used for switches, mode selectors, or toolbars.
2️⃣ Key Features
- Selected property –
toggleButton.isSelected()returns true/false. - Text changes – you can change the text depending on state.
- Can be part of a
ToggleGroup– like radio buttons (only one selected at a time). - Events – use
setOnAction()to handle clicks.
3️⃣ Simple Java Example
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class ToggleButtonExample extends Application {
@Override
public void start(Stage primaryStage) {
ToggleButton toggleButton = new ToggleButton("OFF");
// Handle toggle
toggleButton.setOnAction(e -> {
if (toggleButton.isSelected()) {
toggleButton.setText("ON");
System.out.println("ToggleButton is ON");
} else {
toggleButton.setText("OFF");
System.out.println("ToggleButton is OFF");
}
});
VBox root = new VBox(toggleButton);
root.setSpacing(20);
root.setStyle("-fx-padding: 20;");
Scene scene = new Scene(root, 200, 150);
primaryStage.setScene(scene);
primaryStage.setTitle("ToggleButton Example");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
✅ Explanation:
toggleButton.isSelected()tells if the button is pressed.- You can update the text or style depending on state.
- Works as a simple switch.
4️⃣ FXML Example
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.ToggleButton?>
<?import javafx.scene.layout.VBox?>
<VBox xmlns="http://javafx.com/javafx/17.0.2" xmlns:fx="http://javafx.com/fxml"
fx:controller="com.example.ToggleButtonController"
spacing="10" style="-fx-padding: 20;">
<ToggleButton fx:id="toggleButton" text="OFF" onAction="#handleToggle"/>
</VBox>
Controller
package com.example;
import javafx.fxml.FXML;
import javafx.scene.control.ToggleButton;
public class ToggleButtonController {
@FXML
private ToggleButton toggleButton;
@FXML
private void handleToggle() {
if (toggleButton.isSelected()) {
toggleButton.setText("ON");
System.out.println("ToggleButton is ON");
} else {
toggleButton.setText("OFF");
System.out.println("ToggleButton is OFF");
}
}
}
5️⃣ Notes
- ToggleGroup:
ToggleGroup group = new ToggleGroup();
toggleButton1.setToggleGroup(group);
toggleButton2.setToggleGroup(group);
- Only one button in the group can be selected at a time.
- Styling: You can change colors using
-fx-background-colorwhen selected/unselected.