2011-09-12 47 views
1

我有大约有70-100小部件(文本框,列表框,用户控件等)GWT形式问题

我想实现CUT的功能,COPY这种形式。对于这一点,我有一个GWT形式2个按钮位于表单顶部。

现在我遇到的问题是,当我点击复制按钮时,在表单中聚焦的小部件失去了焦点,我不知道要复制哪些文本(或者哪个小部件在焦点到达前复制按钮)

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

我该如何解决这个问题?

感谢

回答

2

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

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);   
    } 
} 
+0

我用你的想法在一定程度上。在我的小部件中放入一个静态变量,只要文本框中的某些文本发生更改就会更新。为该静态文本添加getter和setter,并且工作出色! – Barry