四时宝库

程序员的知识宝库

JavaFX学习笔记011(输入框、密码框、标签)

输入框(文本框)


import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class TextFieldDemoWithTooltip extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        TextField textField = new TextField();
        textField.setPromptText("在这里输入文本");

        // 左对齐文本框
        TextField leftTextField = new TextField();
        leftTextField.setPromptText("左对齐");
        leftTextField.setAlignment(Pos.BASELINE_LEFT);

        // 右对齐文本框
        TextField rightTextField = new TextField();
        rightTextField.setPromptText("右对齐");
        rightTextField.setAlignment(Pos.BASELINE_RIGHT);

        // 添加提示文本监听和Tooltip
        addPromptTextListenerAndTooltip(textField, "默认对齐");
        addPromptTextListenerAndTooltip(leftTextField, "左对齐");
        addPromptTextListenerAndTooltip(rightTextField, "右对齐");

        HBox hbox = new HBox(10, textField, leftTextField, rightTextField);
        hbox.setAlignment(Pos.CENTER);

        Scene scene = new Scene(hbox, 400, 150);

        primaryStage.setTitle("JavaFX 文本框演示");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    private void addPromptTextListenerAndTooltip(TextField textField, String alignment) {
        // 添加提示文本监听
        textField.focusedProperty().addListener((observable, oldValue, newValue) -> {
            if (!newValue && textField.getText().isEmpty()) {
                textField.setPromptText("在这里输入文本");
            } else {
                textField.setPromptText(null);
            }
        });

        // 添加Tooltip
        Tooltip tooltip = new Tooltip("对齐方式: " + alignment);
        Tooltip.install(textField, tooltip);
    }
}


在这个示例中,addPromptTextListenerAndTooltip方法用于同时添加提示文本监听和Tooltip。当用户将鼠标悬停在文本框上时,会显示相应的提示信息。

获取和设置文本内容:

  • getText():获取文本框的当前文本内容。
  • setText(String text):设置文本框的文本内容。
TextField textField = new TextField();
String currentText = textField.getText(); // 获取文本框的当前文本内容
textField.setText("新的文本"); // 设置文本框的文本内容

获取和设置提示文本:

  • getPromptText():获取文本框的提示文本。
  • setPromptText(String promptText):设置文本框的提示文本。
TextField textField = new TextField();
String promptText = textField.getPromptText(); // 获取文本框的提示文本
textField.setPromptText("在这里输入文本"); // 设置文本框的提示文本

文本变化监听:

  • textProperty():获取文本框的文本属性,可以添加监听器。
  • textProperty().addListener((observable, oldValue, newValue) -> {...}):添加文本变化监听器。
TextField textField = new TextField();
textField.textProperty().addListener((observable, oldValue, newValue) -> {
    System.out.println("文本变化:" + newValue);
});

限制输入长度:

setMaxLength(int maxLength):设置文本框的最大长度。

TextField textField = new TextField();
textField.setMaxLength(10); // 设置文本框的最大长度为10

光标位置和选中文本:

  • positionCaret(int position):设置光标位置。
  • selectRange(int start, int end):选中指定范围的文本。
TextField textField = new TextField();
textField.positionCaret(5); // 设置光标位置为第5个字符
textField.selectRange(2, 7); // 选中文本的第2到第7个字符

清除文本:

clear():清除文本框的内容。

TextField textField = new TextField();
textField.clear(); // 清除文本框的内容

这些方法为你提供了在 TextField 中处理文本和用户输入的灵活性。根据具体需求,你可以选择使用适当的方法来实现相应的功能。

密码框

在JavaFX中,密码框(PasswordField)是用于接收密码输入的控件,与普通的文本框(TextField)不同,密码框的内容通常被隐藏。以下是PasswordField类的一些常用方法:

获取和设置密码内容:

  • getCharacters():获取密码框的当前密码内容,返回一个ObservableList<Character>。
  • setText(String text):设置密码框的密码内容。
PasswordField passwordField = new PasswordField();
ObservableList<Character> passwordChars = passwordField.getCharacters(); // 获取密码框的当前密码内容
passwordField.setText("newPassword"); // 设置密码框的密码内容

获取和设置提示文本:

  • getPromptText():获取密码框的提示文本。
  • setPromptText(String promptText):设置密码框的提示文本。
PasswordField passwordField = new PasswordField();
String promptText = passwordField.getPromptText(); // 获取密码框的提示文本
passwordField.setPromptText("请输入密码"); // 设置密码框的提示文本

密码变化监听:

  • textProperty():获取密码框的密码属性,可以添加监听器。
  • textProperty().addListener((observable, oldValue, newValue) -> {...}):添加密码变化监听器。
PasswordField passwordField = new PasswordField();
passwordField.textProperty().addListener((observable, oldValue, newValue) -> {
    System.out.println("密码变化:" + newValue);
});

限制输入长度:

  • setMaxLength(int maxLength):设置密码框的最大密码长度。
PasswordField passwordField = new PasswordField();
passwordField.setMaxLength(10); // 设置密码框的最大密码长度为10

清除密码:

  • clear():清除密码框的密码内容。
PasswordField passwordField = new PasswordField();
passwordField.clear(); // 清除密码框的密码内容

密码框提供了类似于文本框的方法,但由于密码通常需要保密,所以密码框的内容通常以字符列表的形式存储,而不是字符串形式。这样可以更好地保护用户的密码。

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class PasswordFieldDemo extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("JavaFX PasswordField Demo");

        // 创建密码框
        PasswordField passwordField = new PasswordField();
        passwordField.setPromptText("请输入密码");

        // 显示密码的标签
        Label passwordLabel = new Label();

        // 添加密码变化监听器
        passwordField.textProperty().addListener((observable, oldValue, newValue) -> {
            passwordLabel.setText("密码: " + newValue);
        });

        // 创建布局
        VBox vbox = new VBox(10);
        vbox.setPadding(new Insets(20, 20, 20, 20));
        vbox.getChildren().addAll(passwordField, passwordLabel);

        // 创建场景
        Scene scene = new Scene(vbox, 300, 150);

        // 设置场景
        primaryStage.setScene(scene);

        // 显示舞台
        primaryStage.show();
    }
}


标签

设置文本内容:

  • setText(String text):设置标签的文本内容。
Label label = new Label();
label.setText("Hello, JavaFX!");

获取文本内容:

  • getText():获取标签的当前文本内容。
Label label = new Label("Hello, JavaFX!");
String text = label.getText();

设置图形图标:

  • setGraphic(Node graphic):设置标签的图形图标,可以是任何继承自Node的图形元素。
Label label = new Label();
ImageView icon = new ImageView(new Image("icon.png"));
label.setGraphic(icon);

设置字体样式:

  • setFont(Font font):设置标签的字体样式。
Label label = new Label();
label.setFont(Font.font("Arial", FontWeight.BOLD, 14));

设置文本对齐方式:

  • setTextAlignment(TextAlignment value):设置文本在标签中的对齐方式。
Label label = new Label();
label.setTextAlignment(TextAlignment.CENTER);

设置标签的提示信息:

  • setTooltip(Tooltip value):为标签设置提示信息。
Label label = new Label();
Tooltip tooltip = new Tooltip("这是一个标签");
label.setTooltip(tooltip);

设置文本颜色:

  • setTextFill(Paint value):设置文本的颜色。
Label label = new Label();
label.setTextFill(Color.BLUE);

设置标签的边距:

  • setPadding(Insets value):设置标签的内边距。
Label label = new Label();
label.setPadding(new Insets(10, 20, 10, 20));

样例代码

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class LabelDemo extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("JavaFX Label Demo");

        // 创建标签
        Label label = new Label("Hello, JavaFX!");

        // 设置字体样式
        Font font = Font.font("Arial", 20);
        label.setFont(font);

        // 设置文本对齐方式
        label.setTextAlignment(javafx.scene.text.TextAlignment.CENTER);

        // 设置文本颜色
        label.setTextFill(Color.DARKGREEN);

        // 设置提示信息
        Tooltip tooltip = new Tooltip("这是一个JavaFX标签");
        label.setTooltip(tooltip);

        // 创建布局
        VBox vbox = new VBox(10);
        vbox.setPadding(new Insets(20, 20, 20, 20));
        vbox.getChildren().addAll(label);

        // 创建场景
        Scene scene = new Scene(vbox, 300, 150);

        // 设置场景
        primaryStage.setScene(scene);

        // 显示舞台
        primaryStage.show();
    }
}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接