SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~リッチなGUIを構築する「Vaadin」(3)

第12回

フォーム利用MyvaadinApplicationクラス

 最後に、Formを利用してフォームを作成します。MyvaadinApplicationクラスを次のように修正してください。これで完成です。

package com.example.myvaadin;

import com.vaadin.Application;
import com.vaadin.data.Property;
import com.vaadin.data.Validator.InvalidValueException;
import com.vaadin.data.util.BeanItem;
import com.vaadin.ui.*;
import com.vaadin.ui.Button.ClickEvent;

public class MyvaadinApplication extends Application {
	Window mainWindow = null;
	BeanItem<MyFormData> item = null;
	Form form = null;

	@Override
	public void init() {
		mainWindow = new Window("Myvaadin Application");
		setMainWindow(mainWindow);
		VerticalLayout layout = (VerticalLayout) mainWindow.getContent();
		layout.setMargin(true);
		layout.setSpacing(true);
		form = createForm();
		layout.addComponent(form);
		Button btn = new Button("OK");
		btn.addListener(new Button.ClickListener() {
			@Override
			public void buttonClick(ClickEvent event) {
				try {
					form.commit();
				} catch(InvalidValueException e){
					e.printStackTrace();
					return;
				}
				String msg = "";
				Property p = item.getItemProperty("name");
				msg += "<h2>" + (String)p.getValue() + "</h2>";
				p = item.getItemProperty("mail");
				msg += "<p>" + (String)p.getValue() + "</p>";
				p = item.getItemProperty("comment");
				msg += "<p>" + (String)p.getValue() + "</p>";
				mainWindow.showNotification(msg);
			}
		});
		layout.addComponent(btn);
	}

	Form createForm(){
		Form form = new Form();
		form.setFormFieldFactory(new MyFormFieldFactory());
		form.setWriteThrough(false);
		form.setInvalidCommitted(false);
		item = new BeanItem<MyFormData>(new MyFormData());
		form.setItemDataSource(item);
		String[] proplist = new String[]{"name","pass","mail","comment"};
		form.setVisibleItemProperties(proplist);
		return form;
	}
}
Formで作成されたフォーム
Formで作成されたフォーム
すべての条件を満たしていると、入力内容を表示する
すべての条件を満たしていると、入力内容を表示する

 アクセスすると、「名前」「パスワード」「メール」「メモ」といった項目のフォームが表示されます。適当に入力してボタンを押すと、値をチェックし、指定した条件を満たすかどうかを調べます。条件を満たしていない場合には、フォームの下にエラーメッセージが表示されます。すべての条件を満たしていると、画面に入力フォームの内容を表示します。

 ここではcreateFormで新たにFormを作成し、「setFormFieldFactory」でMyFormFieldFactoryをFormのファクトリーに設定しています。また「setItemDataSource」でフォームのデータソースとしてMyFormDataを保管したBeanItemインスタンスを設定しています。このようにファクトリーの設定データソースの設定の2つをきっちりと行うことにより、Formは自分自身でデータを管理できるようになるのです。

 ちなみに、フォームのデータを取得する場合は、BeanItemの「getItemProperty」メソッドを使います。引数に取得したい項目名を指定して呼び出すことで、その値を取り出すことができます。

次のページ
UriFragmentUtilityによるフラグメント管理

この記事は参考になりましたか?

Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4943 2010/03/18 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー