Текстовые элементы управления

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

JavaFX предоставляет ряд элементов управления для ввода текста: TextField (для ввода однострочного текста), TextArea (для ввода многострочного текста) и PasswordField (для ввода пароля).

Все эти элементы управления наследуются от класса TextInputControl, который определяет базовую функциональность. Вкратце рассмотрим эту функциональность. Основные свойства:

  • BooleanProperty editable: указывает, можно ли редактировать текст в поле

  • ObjectProperty<Font> font: определяет шрифт

  • StringProperty promptText: определяет текст-приглашение к вводу

  • ReadOnlyStringProperty selectedText: определяет выделенный текст

  • ObjectProperty<TextFormatter<?>> textFormatter: определяет форматировщик текста

  • StringProperty text: определяет текст в поле

  • ReadOnlyBooleanProperty undoable: определяет, можно ли отменить последнее изменение содержимого в поле

Некоторые из методов TextInputControl:

  • void appendText​(String text): добавляет текст к содержимому элемента управления

  • void backward(): перемещает курсор по тексту назад

  • void clear(): определяет текст-приглашение к вводу

  • void copy(): копирует выделенный текст в буфер обмена

  • void cut(): удаляет выделенный текст, копируя его в буфер обмена

  • void deleteText​(int start, int end): удаляет текст между двумя символами, которые имеют индексы start и end

  • void deselect(): снимает выделение текста

  • String getText(): возвращает введенный текст

  • String getText​(int start, int end): возвращает текст между символами с индесами start и end

  • void insertText​(int index, String text): вставляет текст на определенную позицию

  • void paste(): вставляет текст из буфера обмена вместо выделенного текста

  • void redo(): возвращает последнюю отмененную операцию

  • void replaceText​(int start, int end, String text): заменяет текст

  • void setFont​(Font value): устанавливает шрифт (свойство font)

  • void setEditable​(boolean value): устанавливает свойство editable

  • void setPromptText​(String value): устанавливает свойство promptText

  • void setText​(String value): устанавливает свойство text

  • void setTextFormatter​(TextFormatter<?> value): устанавливает свойство textFormatter

  • void undo(): отменяет последнее изменение содержимого

TextField

Для создания однострочного текстового поля мы можем использовать один из двух его конструкторов:

  • TextField(): создает пустое текстовое поле

  • TextField​(String text): создает текстовое поле с некоторым начальным текстом

Большую часть функциональности TextField наследует от TextInputControl. Из собственных методов у TextField следует отметить метод

void setPrefColumnCount(int columns)

Данный метод устанавливает количество столбцов, то есть по сути размер текстового поля.

Например, используем TextField в программе:

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.TextField;
import javafx.scene.control.Button;

import javafx.geometry.Orientation;
 
public class Main extends Application{
	
    public static void main(String[] args) {
         
        Application.launch(args);
    }
     
    @Override
    public void start(Stage stage) throws Exception {
         
        Label lbl = new Label();
		TextField textField = new TextField();
		textField.setPrefColumnCount(11);
		Button btn = new Button("Click");
		btn.setOnAction(event -> lbl.setText("Input: " + textField.getText()));
		FlowPane root = new FlowPane(Orientation.VERTICAL, 10, 10, textField, btn, lbl);
        Scene scene = new Scene(root, 250, 200);
         
        stage.setScene(scene);
        stage.setTitle("TextField in JavaFX");
        stage.show();
    }
}

В данном случае при нажатии на кнопку считываем введенный в TextField текст и выводим его в элементе Label:

TextField in JavaFX

TextArea

TextArea во многом аналогичен TextField. Он также имеет два конструктора:

  • TextArea(): создает пустое текстовое поле

  • TextArea(String text): создает текстовое поле с некоторым начальным текстом

Но поскольку TextArea представляет многострочное текстовое поле, то для него мы можем управлять как количеством столбцов, так и количеством строк с помощью следующих методов:

void setPrefColumnCount(int columns)	// устанавливает кол-во столбцов
void setPrefRowCount(int rows)			// устанавливает кол-во строк

Используем TextArea:

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.TextArea;
import javafx.scene.control.Button;

import javafx.geometry.Orientation;
import javafx.geometry.Pos;
 
public class Main extends Application{
	
    public static void main(String[] args) {
         
        Application.launch(args);
    }
     
    @Override
    public void start(Stage stage) throws Exception {
         
        Label lbl = new Label();
		TextArea textArea = new TextArea();
		textArea.setPrefColumnCount(15);
		textArea.setPrefRowCount(5);
		Button btn = new Button("Click");
		btn.setOnAction(event -> lbl.setText("Input: " + textArea.getText()));
		FlowPane root = new FlowPane(Orientation.VERTICAL, 10, 10, textArea, btn, lbl);
		root.setAlignment(Pos.CENTER);
        Scene scene = new Scene(root, 300, 250);
         
        stage.setScene(scene);
        stage.setTitle("TextArea in JavaFX");
        stage.show();
    }
}
TextArea in JavaFX
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850