CheckBox

Последнее обновление: 16.06.2018

Класс 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 in JavaFX

Поскольку 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.

CheckBox in JavaFX
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850