JavaFXでテキストエリアを入力不可(disable,editable)にする方法について記載します。
目次
テキストエリアを入力不可にする方法
テキストエリアを入力不可にする方法は2つあります。
それぞれ、目的に合わせて使用します。
No | メソッド | 特徴 |
---|---|---|
1 |
setEditable |
・入力不可のコントロールにフォーカスが当たる。 ・入力不可のコントロールからテキストをコピーできる。 |
2 |
setDisable |
・入力不可のコントロールにフォーカスが当たらない。 ・入力不可のコントロールからテキストをコピーできない。 |
1. setEditable を使って入力不可にする
setEditableを使用するとテキストエリアが入力不可になり
・フォーカスが当たる
・テキストをコピーできる
という制御を行うことができます。
構文
setEditable( boolean )
true:入力可能、false:入力不可
true:入力可能、false:入力不可
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.TextArea; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args){ Application.launch(args); } @Override public void start(Stage pStage) throws Exception { /* ------------------------ */ /* 名前 */ /* ------------------------ */ // Label Label lblName = new Label("テキスト1:"); lblName.setPrefWidth(200); // TextArea TextArea textName = new TextArea(); textName.setMaxWidth(200); textName.setMaxHeight(100); textName.setEditable(false); // 入力不可にする VBox hbName = new VBox(); hbName.setMaxWidth(200); hbName.setAlignment(Pos.CENTER_LEFT); hbName.getChildren().addAll(lblName,textName); /* ------------------------ */ /* 住所 */ /* ------------------------ */ // Label Label lblAddress = new Label("テキスト2:"); lblAddress.setPrefWidth(200); // TextArea TextArea textAddress = new TextArea(); textAddress.setMaxWidth(200); textAddress.setMaxHeight(100); textAddress.setText("テキストのコピー可能"); textAddress.setEditable(false); // 入力不可にする VBox hbAddress = new VBox(); hbAddress.setMaxWidth(200); hbAddress.setAlignment(Pos.CENTER_LEFT); hbAddress.getChildren().addAll(lblAddress,textAddress); /* ------------------------ */ /* 名前、住所を縦に並べる */ /* ------------------------ */ VBox vbRoot = new VBox(); vbRoot.setAlignment(Pos.CENTER); vbRoot.setSpacing(10.0); vbRoot.getChildren().addAll(hbName,hbAddress); pStage.setTitle("テキストエリア"); pStage.setWidth(300); pStage.setHeight(300); pStage.setScene(new Scene(vbRoot)); pStage.show(); } } |
2. setDisable を使って入力不可にする
setDisableを使用するとテキストエリアが入力不可になり
・フォーカスが当たらない
・テキストをコピーできない
という制御を行うことができます。
構文
setDisable( boolean )
true:入力不可、false:入力可能
true:入力不可、false:入力可能
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
import javafx.application.Application; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.TextArea; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args){ Application.launch(args); } @Override public void start(Stage pStage) throws Exception { /* ------------------------ */ /* 名前 */ /* ------------------------ */ // Label Label lblName = new Label("テキスト1:"); lblName.setPrefWidth(200); // TextArea TextArea textName = new TextArea(); textName.setMaxWidth(200); textName.setMaxHeight(100); textName.setDisable(true); // 入力不可にする VBox hbName = new VBox(); hbName.setMaxWidth(200); hbName.setAlignment(Pos.CENTER_LEFT); hbName.getChildren().addAll(lblName,textName); /* ------------------------ */ /* 住所 */ /* ------------------------ */ // Label Label lblAddress = new Label("テキスト2:"); lblAddress.setPrefWidth(200); // TextArea TextArea textAddress = new TextArea(); textAddress.setMaxWidth(200); textAddress.setMaxHeight(100); textAddress.setText("テキストのコピー不可"); textAddress.setDisable(true); // 入力不可にする VBox hbAddress = new VBox(); hbAddress.setMaxWidth(200); hbAddress.setAlignment(Pos.CENTER_LEFT); hbAddress.getChildren().addAll(lblAddress,textAddress); /* ------------------------ */ /* 名前、住所を縦に並べる */ /* ------------------------ */ VBox vbRoot = new VBox(); vbRoot.setAlignment(Pos.CENTER); vbRoot.setSpacing(10.0); vbRoot.getChildren().addAll(hbName,hbAddress); pStage.setTitle("テキストエリア"); pStage.setWidth(300); pStage.setHeight(300); pStage.setScene(new Scene(vbRoot)); pStage.show(); } } |