2012-01-04 21 views
0

我需要設置ENTER鍵以在位於com.vaadin.ui.Panel上的啓用字段之間導航。我如何以編程方式執行此操作?如何在vaadin框架中用另一個替換keycode?

這是我的意圖,但現在不如何發送按鍵:完美

Action ENTER_KEY_ACTION = new ShortcutAction(
     "Enter key" 
     , ShortcutAction.KeyCode.ENTER 
     , null 
     ); 

public Action[] getActions(Object target, Object sender) { 
    return new Action[] { ENTER_KEY_ACTION}; 
} 

public void handleAction(Action action, Object sender, Object target) { 
    if (action == ENTER_KEY_ACTION) { 
     ENTERKeyHandler(); 
    } 
} 

protected void ENTERKeyHandler(){ 
    // 
    //here i need to send a TAB keyPress 
    // 
} 

此代碼的工作到現在卻沒有結束。我不知道是否有另一種方法來實現這一目標? 請對不起我的英文。

回答

0

AbstractComponent類爲此提供了一種方法(您的字段對象擴展了AbstractComponent)。該方法被稱爲fireEvent(Component.Event事件)

您可以嘗試使用此方法向已註冊的偵聽器發送事件。

+0

感謝您的回答。但我試圖在Panel實例級別執行此操作,另一方面,fireEvent被聲明爲受保護的方法。我認爲這樣我需要子類AbstractComponent,這對於所有類別的重點組件的未來發展來說太複雜了。我試圖只使用vaadin組件和一些插件,但不是我自己的組件。無論如何謝謝 – 2012-01-05 19:16:05

0

嘗試在Panel中的字段中添加FocusListener,該字段跟蹤當前的焦點字段。您還必須知道服務器端的字段的Tab鍵順序,以及您要調用field.focus()的ENTERKeyHandler()方法才能關注該字段。

+0

謝謝亨利。我會嘗試通過這種方式爲此創建一些遍歷焦點策略和處理程序,保持一定的簡單方式,首先需要爲這種已經實現的東西稍微搜索一下。我不想重新發明輪子。 – 2012-01-05 19:13:36

相關問題