Класс javafx.scene.control.CheckBox представляет флажок, который может находиться в трех состояниях: отмеченном, неотмеченном и неопределенном (indeterminate). По сути CheckBox также, как и Button, представляет своего рода кнопку, так как наследуется также от класса ButtonBase.
CheckBox имеет два конструктора:
CheckBox()
: создает флажок без метки
CheckBox(String text)
: создает флажок с определенной меткой
CheckBox определяет три свойства:
BooleanProperty allowIndeterminate
: определяет, может ли флажок находитьс в тех состояниях
BooleanProperty indeterminate
: определяет, находится ли флажок в неопределенном состоянии
BooleanProperty selected
: определяет, отмечен ли флажок
Основные методы CheckBox:
void fire()
: переключает состояние флажка
isAllowIndeterminate()
: возвращает значение свойства allowIndeterminate
boolean isIndeterminate()
: возвращает значение свойства indeterminate
boolean isSelected()
: возвращает значение свойства selected
void setAllowIndeterminate(boolean value)
: устанавливает значение свойства allowIndeterminate
void setIndeterminate(boolean value)
: устанавливает значение свойства indeterminate
void setSelected(boolean value)
: устанавливает значение свойства selected
Определим несколько элементов CheckBox:
import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.FlowPane; import javafx.scene.control.Label; import javafx.scene.control.CheckBox; import javafx.geometry.Orientation; import javafx.geometry.Insets; public class Main extends Application{ CheckBox java; CheckBox javaScript; CheckBox csharp; Label selectedLangs; public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage stage) throws Exception { CheckBox java = new CheckBox("Java"); java.setSelected(true); CheckBox javaScript = new CheckBox("JavaScript"); javaScript.setAllowIndeterminate(true); CheckBox csharp = new CheckBox("C#"); csharp.setAllowIndeterminate(true); csharp.setIndeterminate(true); FlowPane root = new FlowPane(Orientation.VERTICAL, 0, 10); root.getChildren().addAll(java, javaScript, csharp); root.setPadding(new Insets(10)); Scene scene = new Scene(root, 250, 200); stage.setScene(scene); stage.setTitle("Hello JavaFX"); stage.show(); } }
Здесь определено три флажка, причем два последних могут находится в неопределенном состоянии:
Поскольку CheckBox наследуется от ButtonBase, то с помощью метода setOnAction мы можем установить обработчик нажатия флажка и соответственно обработать его нажатие. Например, напишем небольшую программу с использованием CheckBox:
import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.FlowPane; import javafx.scene.control.Label; import javafx.scene.control.CheckBox; import javafx.geometry.Orientation; import javafx.geometry.Insets; public class Main extends Application{ CheckBox java; CheckBox javaScript; CheckBox csharp; Label selectedLangs; public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage stage) throws Exception { selectedLangs = new Label("No languages seleted"); java = new CheckBox("Java"); javaScript = new CheckBox("JavaScript"); csharp = new CheckBox("C#"); java.setOnAction(event -> show()); javaScript.setOnAction(event -> show()); csharp.setOnAction(event -> show()); FlowPane root = new FlowPane(Orientation.VERTICAL, 0, 10); root.getChildren().addAll(java, javaScript, csharp, selectedLangs); root.setPadding(new Insets(0, 0, 0, 10)); Scene scene = new Scene(root, 250, 200); stage.setScene(scene); stage.setTitle("Hello JavaFX"); stage.show(); } private void show(){ String allSelected = ""; if(java.isSelected()) allSelected += "Java "; if(javaScript.isSelected()) allSelected += "JavaScript "; if(csharp.isSelected()) allSelected += "C#"; if(allSelected.equals("")) selectedLangs.setText("No languages selected"); else selectedLangs.setText(allSelected); } }
Здесь определены три элемента CheckBox. Для каждого элемента через метод setOnAction()
устанавливается обработчик нажатия,
в котором вызывается метод show. С помощью данного метода просматриваем все отмеченные флажки и соответствующим образом изменяем надпись на элементе Label.