GWT(またはJava AWT Swing)で同じ種類の複数のオブジェクトに対して同じ機能を実行する同じイベントハンドラーを使用するにはどうすればよいですか?

abitcode

Gwt2.0の作業を始めたばかりです。ここに2つのテキストボックスがあります。どちらも同じイベント操作を実行します。使用する

addFocusListener()

私が今持っているのはです。

areaBox.addFocusListener(new FocusListener(){

        @Override
        @Deprecated
        public void onFocus(Widget arg0) {
            // TODO Auto-generated method stub
            areaBox.setTitle("Area");
        }
            @Override
            public void onLostFocus(Widget arg0) {
                if(areaBox.getText().length() >= 4 )
                {
                    areaBox.setStyleName("gwt-TextBox-Success");
                }
                else
                {
                    areaBox.setStyleName("gwt-TextBox-Error");
                    cityBox.setText("Enter Area Name ");
                    areaBox.addFocusListener(new FocusListener(){

                        @Override
                        @Deprecated
                        public void onFocus(Widget arg0) {
                            areaBox.setText(null);
                            areaBox.setStyleName("gwt-TextBox-AE");

                        }

                        @Override
                        @Deprecated
                        public void onLostFocus(Widget arg0) {

                        }

                    });

                }
            }

});
cityBox.addFocusListener(new FocusListener(){

    @Override
    @Deprecated
    public void onFocus(Widget arg0) {
        cityBox.setTitle("City");
    }
        @Override
        public void onLostFocus(Widget arg0) {
            if(cityBox.getText().length() >= 4 )
            {
                cityBox.setStyleName("gwt-TextBox-Success");
            }
            else
            {
                cityBox.setStyleName("gwt-TextBox-Error");
                cityBox.setText("Enter City Name ");

                cityBox.addFocusListener(new FocusListener(){

                    @Override
                    @Deprecated
                    public void onFocus(Widget arg0) {
                        cityBox.setText(null);
                        cityBox.setStyleName("gwt-TextBox-AE");

                    }

                    @Override
                    @Deprecated
                    public void onLostFocus(Widget arg0) {
                        // TODO Auto-generated method stub

                    }

                });

            }
        }

}); 

コードは何をしますか。Area TextBoxにフォーカスすると、何を入力するかを示すツールチップが表示されます。フォーカスが失われるか、次のテキストボックス(City TextBox)に到達すると、入力された文字列が4文字を超えているかどうかがチェックされます。はいの場合、SUCCESS cssスタイルがボックスに適用され、そうでない場合、ERRORcssスタイルが適用されます。そのため、もう一度クリックすると(AreaBox)、テキストがクリアされ、cssスタイルがリセットされます。

上記は2つのテキストボックス間のサンプルです。私を助けてください、私はほぼ10のそのようなフィールドを持っています、私はコードを最小にしたいです。コレクションやカスタムウィジェットの使用を考えています。しかし、どこから始めればよいのかわからない。あなたの助けと意見が必要です。ありがとう...

クリストファーA。

この問題を解決する方法は次のとおりです。

areaBox.addFocusListener(generateFocusListener("Area", "Enter Area Name "));
cityBox.addFocusListener(generateFocusListener("City", "Enter City Name "));

FocusListener generateFocusListener(final String title, final String text) {
    return new FocusListener(){

            @Override
            @Deprecated
            public void onFocus(Widget widget) {
                // initial focus happens here
                TextBox box = (TextBox) widget;
                box.setTitle(title);
            }

            @Override
            public void onLostFocus(Widget widget) {
                // Focus is lost for the first time

                TextBox box = (TextBox) widget;
                if(box.getText().length() >= 4 )
                {
                    box.setStyleName("gwt-TextBox-Success");

                    // Change focus listener so that now once pressed it resets
                    box.addFocusListener(new FocusListener(){

                        @Override
                        @Deprecated
                        public void onFocus(Widget widget) {
                            TextBox box = (TextBox) widget;
                            box.setText(null);
                            box.setStyleName("gwt-TextBox-AE");
                        }

                        @Override
                        @Deprecated
                        public void onLostFocus(Widget widget) {
                            TextBox box = (TextBox) widget;
                            if(box.getText().length() >= 4 )
                            {
                                box.setStyleName("gwt-TextBox-Success");
                            }
                            else
                            {
                                box.setStyleName("gwt-TextBox-Error");
                                box.setText(text);
                            }

                        }

                    });
                }
                else
                {
                    box.setStyleName("gwt-TextBox-Error");
                    box.setText(text);
                }
            }

    };
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ