第4章 JavaFX による GUI プログラミング : 問題 1 : テキストフィールドとラベル
問題
テキストフィールドとラベルを持つプログラムを実装せよ
ラベルのテキストは "Hello, JavaFX"、フォントは100ポイント
ユーザーがテキストフィールドを編集したらラベルのテキストを連動して更新する
解答
これこそ、まさに練習問題ですね :-)
ついでにラベルのフォントサイズに連動するスライダも付けておきます
■ InvalidationListener
を使用
public void start(Stage stage) throws Exception { // ラベル Label message = new Label("Hello, JavaFX!"); message.setFont(new Font(100.0)); // スライダ Slider slider = new Slider(); slider.setValue(100); slider.valueProperty().addListener( property -> message.setFont(new Font(slider.getValue())) ); // テキストフィールド TextField textField = new TextField(message.getText()); textField.textProperty().addListener( property -> message.setText(textField.getText()) ); // 配置 VBox root = new VBox(); root.getChildren().addAll(textField, slider, message); stage.setScene(new Scene(root)); stage.setTitle("Hello"); stage.show(); }
■ 表示直後
ちなみにInvalidationListener
をChangeListener
に変えても、動きは同じです
■ ChangeListener
を使用
// スライダ slider.valueProperty().addListener( (property, oldValue, newValue) -> message.setFont(new Font(newValue.doubleValue())) ); // テキストフィールド textField.textProperty().addListener( (property, oldText, newText) -> message.setText(newText) );