質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Q&A

1回答

1472閲覧

コードの意味を説明してもらえませんか

退会済みユーザー

退会済みユーザー

総合スコア0

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

0グッド

0クリップ

投稿2018/08/21 06:54

参考書でJavaFXを勉強しています。
分からないコードをネットで調べながら勉強しているのですが、コードが長くて
よくわかりません。同じコードについてteratailのなかに説明があり、cb.getSelectionModel().selectedItemProperty().addListenerまでは
何となくわかりました。
cb.getSelectionModel().selectedItemProperty().addListener();の中を
説明してもらえませんか。
個々のChangeListener<T>インターフェース、
ObservableValue<? extends String>ov,String old_val,String new_val
changed()メソッド、などは検索して大体わかっているつもりです。
よろしくお願いいたします。

//チェックボックスの選択項目として色の名前を登録し、ユーザーが //リストの中から色を選択したら、四角形の色をその色に変更するプログラム package application; import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.Scene; import javafx.scene.control.ChoiceBox; import javafx.scene.layout.HBox; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; public class Choice1 extends Application { @Override public void start(Stage stage) throws Exception { stage.setTitle("Choice"); stage.setWidth(260); stage.setHeight(180); // Rectangle rect = new Rectangle(200,200); ChoiceBox<String> cb = new ChoiceBox<String>(); //ChoiceBoxは、ドロップダウンリストから項目を選択できるように //するためののコントロールです。 cb.getItems().addAll("RED","BLUE","GREEN","LIGHTGRAY"); //ドロップダウンリストに項目を登録するには,getItems().add()や // getItems().addAll()を使います。 /* ユーザーがリストの項目を選択したというイベントを処理するときには、 getSelectionModel().selectedItemProperty()で選択された項目の プロパティを取得してaddListener()でイベントハンドラに登録します。 */ cb.getSelectionModel().selectedItemProperty().addListener( new ChangeListener<String>() { @Override public void changed(ObservableValue<? extends String>ov, String old_val,String new_val) { rect.setFill(Color.valueOf(cb.getValue())); } }); cb.getSelectionModel().selectFirst(); //コードの項目を選択したいときには、getSelectionModel().selectFirst()や //getSelectionModel().select()などを使います。 HBox root = new HBox(); root.getChildren().addAll(cb,rect); stage.setScene(new Scene(root)); stage.show(); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

せっかく回答依頼をいただいたので、Javaの文法の範疇でお答えします。
JavaFXはいじったことがありませんので、外していたらごめんなさい。

cb.getSelectionModel().selectedItemProperty().addListener();の中を

説明してもらえませんか。

匿名クラスと言って、その場で使い捨てのクラスを作る機能です。
ご提示のコードは、次のように書いても同じです。(私の好みに若干成形しています)

Java

1class MyChangeListener extends ChangeListender<String> { 2 @Override 3 public void changed( 4 ObservableValue<? extends String> ov, 5 String old_val, String new_val 6 ) { 7 rect.setFill(Color.valueOf(cb.getValue())); 8 } 9} 10 11... 12 13 cb.getSelectionModel() 14 .selectedItemProperty() 15 .addListener(new MyChangeListener()) 16 ; 17 18...

投稿2018/08/21 07:59

LouiS0616

総合スコア35658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問