2015-09-19 31 views

回答

0

如果您triyng使用ENTER鍵作爲TAB鍵。下面的代碼不是很優雅,但它的工作原理。你可以重構,從一個數組等設置的順序...

試想一個登錄表單(用戶名和密碼字段,登入按鈕):

public class LoginView extends VerticalLayout { 

private TextField username; 
private PasswordField passwordFld; 
private AbstractTextField current; 

public LoginView(
    buildFields(); 
} 

private void buildFields(){ 
    HorizontalLayout fields = new HorizontalLayout(); 
    username = new TextField("User"); 
    passwordFld = new PasswordField("Pwd"); 
    Button signin = new Button("Sign"); 
    fields.addComponents(username, passwordFld,signin);   

    username.addFocusListener(new FocusListener() {  
     public void focus(FocusEvent event) { 
      current = username;    
     } 
    }); 
    passwordFld.addFocusListener(new FocusListener() {  
     public void focus(FocusEvent event) { 
      current = passwordFld;    
     } 
    }); 
    ShortcutListener enterkey = new ShortcutListener ("Enter", KeyCode.ENTER, null){ 
     public void handleAction(Object sender, Object target) { 
      if (current.equals(username)){ 
       passwordFld.focus(); 
      }else if (current.equals(passwordFld)){ 
       sign(); 
      }else{ 
       sign(); 
      } 
     }  
    }; 
    fields.addShortcutListener(enterkey);  
    signin.addClickListener(getClickListener());   
    addComponent(fields); 
} 

private ClickListener getClickListener() { 
    return new ClickListener() {    
     public void buttonClick(final ClickEvent event) { 
      sign(); 
     } 
    }; 
} 
private void sign(){ 
//Do the sign in or fail 
    } 
    } 
相關問題