JavaFX UI控件教程(九)之Text Field
翻譯自? ?Text Field
本章討論文本字段控件的功能。
的TextField類實現接受并顯示文本輸入的UI控制。它提供了從用戶接收文本輸入的功能。與另一個文本輸入控件一起,PasswordField此類擴展了TextInput類,它是通過JavaFX API提供的所有文本控件的超類。
圖8-1顯示了帶有標簽的典型文本字段。
圖8-1標簽和文本字段
?
創建文本字段
在示例8-1中,文本字段與標簽結合使用,以指示應在字段中鍵入的內容的類型。
示例8-1創建文本字段
Label label1 = new Label("Name:"); TextField textField = new TextField (); HBox hb = new HBox(); hb.getChildren().addAll(label1, textField); hb.setSpacing(10);您可以創建一個空文本字段,如例8-1所示,或者創建一個包含特定文本數據的文本字段。要使用預定義文本創建文本字段,請使用以下TextField類的構造函數:TextField("Hello World!")。您可以通過調用getText方法隨時獲取文本字段的值。
您可以應用類的setPrefColumnCount方法TextInput來設置文本字段的大小,定義為一次可以顯示的最大字符數。
使用文本字段構建UI
通常,TextField對象在表單中用于創建多個文本字段。圖8-2中的應用程序顯示三個文本字段,并處理用戶在其中輸入的數據。
圖8-2 TextFieldSample應用程序
例8-2中的代碼片段創建了三個文本字段和兩個按鈕,并使用GridPane容器將它們添加到應用程序的場景中。當您需要為UI控件實現靈活的布局時,此容器特別方便。
示例8-2向應用程序添加文本字段
//Creating a GridPane container GridPane grid = new GridPane(); grid.setPadding(new Insets(10, 10, 10, 10)); grid.setVgap(5); grid.setHgap(5); //Defining the Name text field final TextField name = new TextField(); name.setPromptText("Enter your first name."); name.setPrefColumnCount(10); name.getText(); GridPane.setConstraints(name, 0, 0); grid.getChildren().add(name); //Defining the Last Name text field final TextField lastName = new TextField(); lastName.setPromptText("Enter your last name."); GridPane.setConstraints(lastName, 0, 1); grid.getChildren().add(lastName); //Defining the Comment text field final TextField comment = new TextField(); comment.setPrefColumnCount(15); comment.setPromptText("Enter your comment."); GridPane.setConstraints(comment, 0, 2); grid.getChildren().add(comment); //Defining the Submit button Button submit = new Button("Submit"); GridPane.setConstraints(submit, 1, 0); grid.getChildren().add(submit); //Defining the Clear button Button clear = new Button("Clear"); GridPane.setConstraints(clear, 1, 1); grid.getChildren().add(clear);花點時間研究代碼片段。的name,lastName和comment文本字段使用的空構造函數來創建TextField類。與示例8-1不同,此代碼片段中的文本字段不附帶標簽。相反,提示字幕會通知用戶在文本字段中輸入的數據類型。該setPromptText方法定義應用程序啟動時出現在文本字段中的字符串。當示例8-2添加到應用程序時,它會產生如圖8-3所示的輸出。
圖8-3包含提示消息的三個文本字段
提示文本與文本字段中輸入的文本之間的區別在于無法通過該getText方法獲取提示文本。
在實際應用程序中,輸入到文本字段的數據將根據特定業務任務所需的應用程序邏輯進行處理。下一節將介紹如何使用文本字段評估輸入的數據并生成對用戶的響應。
?
處理文本字段數據
如前所述,用戶輸入文本字段的文本數據可以通過類的getText方法獲得TextInput。
學習例8-3,學習如何處理TextField對象的數據。
示例8-3定義提交和清除按鈕的操作
//Adding a Label final Label label = new Label(); GridPane.setConstraints(label, 0, 3); GridPane.setColumnSpan(label, 2); grid.getChildren().add(label);//Setting an action for the Submit button submit.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e) {if ((comment.getText() != null && !comment.getText().isEmpty())) {label.setText(name.getText() + " " + lastName.getText() + ", "+ "thank you for your comment!");} else {label.setText("You have not left a comment.");}}});//Setting an action for the Clear button clear.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e) {name.clear();lastName.clear();comment.clear();label.setText(null);} });Label添加到GridPane容器的控件呈現應用程序對用戶的響應。當用戶單擊“提交”按鈕時,該setOnAction方法將檢查comment文本字段。如果它包含非空字符串,則會呈現感謝信息。否則,應用程序通知用戶尚未留下注釋消息,如圖8-4所示。
圖8-4注釋文本字段留空
當用戶單擊“清除”按鈕時,將在所有三個文本字段中刪除內容。
查看一些可用于文本字段的有用方法。
-
copy()- 將文本中當前選定的范圍傳輸到剪貼板,保留當前選擇。
-
cut()- 將文本中當前選定的范圍傳輸到剪貼板,刪除當前選擇。
-
paste()- 將剪貼板中的內容傳輸到此文本中,替換當前選擇。
?
相關的API文檔 ?
-
TextField
-
TextInputControl
總結
以上是生活随笔為你收集整理的JavaFX UI控件教程(九)之Text Field的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果手机怎么改qq主题
- 下一篇: 微信消息提醒震动为何关不了