GWT (또는 Java AWT Swing)에서 동일한 종류의 여러 객체에 동일한 기능을 수행하는 동일한 이벤트 핸들러를 어떻게 사용할 수 있습니까?

abitcode

방금 Gwt2.0 작업을 시작했습니다. 여기에 두 개의 텍스트 상자가 있습니다. 둘 다 동일한 이벤트 작업을 수행합니다. 사용

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

                    }

                });

            }
        }

}); 

코드가하는 일입니다. Focused on Area TextBox, 입력 할 내용을 보여주는 도구 설명이 나타납니다. Focus on it이 손실되거나 다음 텍스트 상자 (예 : City TextBox)로 오면 입력 한 문자열이 4 자 이상인지 확인합니다. 그렇다면 SUCCESS CSS 스타일이 상자에 적용되고, 그렇지 않으면 ERROR CSS 스타일이 적용됩니다. 따라서 다시 클릭하면 (AreaBox) 텍스트가 지워지고 CSS 스타일이 재설정됩니다.

위는 두 개의 텍스트 상자 사이의 샘플입니다. 제발 도와주세요. 거의 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 관련 기사

뜨겁다태그

보관