JavaFX密碼欄位


PasswordField用於密碼輸入。使用者鍵入的字元通過顯示回顯字串被隱藏。

建立密碼欄位

以下程式碼使用來自PasswordField類的預設建構函式建立一個密碼欄位,然後為密碼欄位設定提示訊息文字。 提示訊息在欄位中顯示為灰色文字,並為使用者提供該欄位是什麼的提示,而不使用標籤控制元件。

PasswordField passwordField = new PasswordField();
passwordField.setPromptText("Your password");

PasswordField類有setText方法來為控制元件設定文字字串。對於密碼欄位,指定的字串由回顯字元隱藏。預設情況下,回顯字元是一個點(或是星號)。

密碼欄位中的值可以通過getText()方法獲取。

範例

密碼欄位和操作偵聽器,如下所示 -

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class Main extends Application {

  final Label message = new Label("");

  @Override
  public void start(Stage stage) {
    Group root = new Group();
    Scene scene = new Scene(root, 260, 80);
    stage.setScene(scene);
    stage.setTitle("Password Field Sample");

    VBox vb = new VBox();
    vb.setPadding(new Insets(10, 0, 0, 10));
    vb.setSpacing(10);
    HBox hb = new HBox();
    hb.setSpacing(10);
    hb.setAlignment(Pos.CENTER_LEFT);

    Label label = new Label("Password");
    final PasswordField pb = new PasswordField();

    pb.setOnAction(new EventHandler<ActionEvent>() {
      @Override
      public void handle(ActionEvent e) {
        if (!pb.getText().equals("abc")) {
          message.setText("Your password is incorrect!");
          message.setTextFill(Color.web("red"));
        } else {
          message.setText("Your password has been confirmed");
          message.setTextFill(Color.web("black"));
        }
        pb.setText("");
      }
    });

    hb.getChildren().addAll(label, pb);
    vb.getChildren().addAll(hb, message);

    scene.setRoot(vb);
    stage.show();
  }

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

上面的程式碼生成以下結果。