我有一个gwt表单,有大约70-100个小部件(文本框,列表框,自定义小部件等)
我正在尝试以此形式实现CUT,COPY的功能。为此,我在表单顶部有2个按钮。
现在我遇到的问题是,当我点击复制按钮时,焦点在窗体中的窗口小部件会失去焦点,我不知道要复制哪个文本(或者哪个窗口小部件在焦点转到复制之前最后聚焦按钮)
我计划在所有小部件上实现模糊处理程序,但我觉得这是一个非常费力且不太好的解决方案。
我如何解决这个问题?
由于
答案 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);
}
}