[解決済み] javafxでsetOnActionイベントを使用する方法
質問
javafxを使って、テキストフィールドが空かどうかを検証したいのですが。
イベントハンドラで迷っています。確認したいことがあります。 - setOnActionを使用する多くの方法があるかどうか。
submit.setOnAction((new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
System.out.println("Hello World");
}
}));
または
submit.setOnAction(e -> handle(e));
この2つの選択肢の違いは何でしょうか?
- 2番目の選択肢は、ActionEventを使用することができないかどうか submit.setOnAction(e -> handle()); とありますが、それではeを定義する目的は何なのでしょうか?
アプリケーションでテキストフィールドのバリデーションを行いたいのですが、どうすればよいですか?
public class AppGUI extends Application{
public static void main(String[] args)
{
launch();
}
public void start(Stage topView)
{
createUI(topView);
}
private void createUI(Stage topView)
{
TextField name = TextField();
Button submit = new Button("Submit");
submit.setOnAction(e -> validate());
}
private boolean validate()
{
// if textfield is empty, return false. else, return true.
}
ここで迷っています。setOnActionのeはvalidateで使わなくても問題ないでしょうか?textfieldの値をvalidate()に渡すにはどうしたらいいでしょうか?textfieldをプライベート変数にするのが唯一の方法でしょうか?(テキストフィールドがたくさんあるので、それが良いオプションかどうか疑問です)。 createUIメソッドで、validate()がfalseを返したら、エラーメッセージを表示し、trueなら、他のことをする、というのはどうすればいいのでしょうか? ありがとうございます、そしてお忙しいところすみません。
解決方法は?
<ブロッククオートこの2つの選択肢の違いは何でしょうか?
2番目の選択肢の場合 ラムダ を使用します (Java 8 から登場)
<ブロッククオートしかし、それではeを定義する目的は何なのでしょうか?
ボタンの場合、あなたのメソッドは次のようなシグネチャを持ちます。
setOnAction(EventHandler<ActionEvent> handler)
と表示されるはずです。
イベントハンドラー・チュートリアル
と
ActionEvent javadoc
. 例えば、e からは、イベントが最初に発生したオブジェクトを次のようにして取得することができます。
e.getSource()
validateでeを使わなくても大丈夫です。
テキストフィールドの値を渡すには、次のようなシグネチャを持つメソッドが必要です。
boolean validate(String text);
コード例です。
private void createUI(Stage topView){
TextField name = TextField();
Button submit = new Button("Submit");
submit.setOnAction(e -> {
boolean validated = validate(name.getText());
if(validated) System.out.println("validated");
}
}
private boolean validate(String text){
return text != null && !text.isEmpty();
}
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン