Gwt形式问题

时间:2011-09-12 15:43:37

标签: gwt

我有一个gwt表单,有大约70-100个小部件(文本框,列表框,自定义小部件等)

我正在尝试以此形式实现CUT,COPY的功能。为此,我在表单顶部有2个按钮。

现在我遇到的问题是,当我点击复制按钮时,焦点在窗体中的窗口小部件会失去焦点,我不知道要复制哪个文本(或者哪个窗口小部件在焦点转到复制之前最后聚焦按钮)

我计划在所有小部件上实现模糊处理程序,但我觉得这是一个非常费力且不太好的解决方案。

我如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:2)

也许有更深入洞察力的人可能会提供更好的方法,但我相信添加模糊处理程序是完全有效的。我不太明白为什么你认为它会很费力,毕竟你不需要为你的每个小部件设置不同的处理程序,你只能使用一个(最多一对用于各种控件......),这是一个非常简单的例子,

public class CustomBlurHandler implements BlurHandler{
    Object lastSource;
    String text;    
    @Override
    public void onBlur(BlurEvent event) {
        if (event.getSource() instanceof TextBox) {             
            lastSource = event.getSource();
            text = textBox.getSelectedText();
        }       
    }   
    public Object getLastSource() {
        return lastSource;
    }
    public String getText() {
        return text;
    }
}

和onModuleLoad:

public class Test implements EntryPoint {       
    CustomBlurHandler handler = new CustomBlurHandler();        
    public void onModuleLoad() {
        TextBox text1 = new TextBox();
        TextBox text2 = new TextBox();          
        text1.addBlurHandler(handler);
        text2.addBlurHandler(handler);      
        Button b = new Button("Get last selected text");
        b.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                Window.alert(handler.getLastSource()+ " " + handler.getText());
            }
        });
        RootPanel.get().add(text1);
        RootPanel.get().add(text2);
        RootPanel.get().add(b);         
    }   
}