Javaソースコードの修正
では、Javaのソースコードを修正しましょう。HelloApp.javaを次のように修正してください(なお、startup以外のメソッドは特に修正しないので割愛しています)。
package jp.tuyano.pivot; import org.apache.pivot.collections.Map; import org.apache.pivot.wtk.*; import org.apache.pivot.wtk.text.validation.*; import org.apache.pivot.wtkx.WTKXSerializer; public class HelloApp implements Application { private Window window; private Label error; private TextInput number1,text1; private PushButton button1; private Checkbox check1; private ButtonGroup group1; @Override public void startup(Display display, Map<String, String> map) throws Exception { WTKXSerializer serializer = new WTKXSerializer(); window = (Window)serializer.readObject(this, "HelloApp.wtkx"); number1 = (TextInput)serializer.get("number1"); number1.setValidator(new IntRangeValidator(0,100)); text1 = (TextInput)serializer.get("text1"); text1.setValidator(new RegexTextValidator("\\w+")); error = (Label)serializer.get("error"); check1 = (Checkbox)serializer.get("check1"); group1 = (ButtonGroup)serializer.get("group1"); button1 = (PushButton)serializer.get("button1"); button1.getButtonPressListeners().add(new ButtonPressListener(){ @Override public void buttonPressed(Button btn) { error.setText(""); if (number1.isTextValid() && text1.isTextValid()){ String msg = "You typed: " + number1.getText() + "," + text1.getText() + "," + check1.getState() + "," + group1.getSelection().getButtonData(); Prompt.prompt(msg, window); } else { error.setText("ERROR!!"); } }}); window.open(display); } ……略…… }
記述したら、実際にプログラムを動かしてみてください(なお、今回はコンポーネントが増えたため、アプレットとして表示する場合は縦幅を280ドット程度に大きくしておく必要があります)。2つの入力フィールドとチェックボックス、ラジオボタンが表示されます。それぞれ値を設定して「OK!」ボタンをクリックすると、入力した値とボタンの状態が画面の上部から現れたウインドウに表示されます。
実際にいろいろとやってみると、プッシュボタンをクリックしてもメッセージが表示されない場合があることに気が付くでしょう。今回は、2つの入力フィールドにバリデーションの機能を設定しています。1つ目は0~99の整数、2つ目は半角英数字の値だけが入力可能となっています。正しく入力されていないと、入力フィールドの背景は赤く表示されます。正しい値が入力されると、色は消え、通常のフィールドの表示になります。正常な値が入力されていないと、ボタンを押しても処理は実行されないのです。