Элементы управления

Кнопки и метки

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

Наиболее часто используемые элементы управления в JavaFX - это, без сомнения, кнопки и метки. Кнопки представлены классом javafx.scene.control.Button и позволяют по нажатию выполнять некоторые действия. А метки представлены классы javafx.scene.control.Label, и их задача - вывод текстовой информации. Класс Button унаследован от классов ButtonBase, Labeled, Region, Control, Parent и Node, а класс Label - от Labeled, Region, Control, Parent и Node. JavaFX позволяет создавать самые разнообразные кнопки и метки: с текстом, графикой, и тем и другим, с различными стилями.

Класс Button имеет три конструктора:

  • Button(): создает кнопку без надписи

  • Button​(String text): создает кнопку с определенной надписью

  • Button​(String text, Node graphic): создает кнопку с определенной надписью и иконкой

Класс Label имеет три похожих конструктора:

  • Label(): создает метку без надписи

  • Label​(String text): создает метку с определенной надписью

  • Label(String text, Node graphic): создает метку с определенной надписью и иконкой

Ключевой возможностью кнопки является способность реагировать на нажатия пользователей и по нажтию выполнять некоторое действие. Для обработки нажатий в базовом классе ButtonBase определен метод setOnAction(), который устанавливает обработчик нажатия:

final void setOnAction(EventHandler<ActionEvent> handler)

В качестве параметра в этот метод передается реализация интерфейса EventHandler:

public interface EventHandler<T extends Event>{
    void handle​(T event);
}

Используем кнопку в программе:

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Parent;
import javafx.scene.layout.FlowPane;
import javafx.scene.control.Label;
import javafx.scene.control.Button;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
 
public class Main extends Application{
     
	int clicks = 0;
	
    public static void main(String[] args) {
         
        Application.launch(args);
    }
     
    @Override
    public void start(Stage stage) throws Exception {
         
		Label lbl = new Label("Counter");
		lbl.setPrefWidth(70);
		Button btn = new Button("Click");
		btn.setPrefWidth(80);
		btn.setOnAction(new EventHandler<ActionEvent>() {
             
            @Override
            public void handle(ActionEvent event) {
             
				clicks++;
                lbl.setText(String.valueOf(clicks));
            }
        });
		
		FlowPane root = new FlowPane(lbl, btn);
        Scene scene = new Scene(root);
         
        stage.setScene(scene);
         
        stage.setTitle("Hello JavaFX");
        stage.setWidth(250);
        stage.setHeight(200);
         
        stage.show();
    }
}

В классе определена переменная-счетчик counter. И по нажатию на кнопку будет увеличиваться ее значение.

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