2013-04-12 75 views
0

這是我的完整編碼。我有兩個類firstone MyDateTime和第二個是員工。 我已經包括mine.For的目前正在編碼中EmployeePart類,AbstractEditorPart是我們的有效期延長輸入密鑰監聽器的日期是不是在Linux的風味工作

public class MyDateTime extends DateTime{ 

    public DateTime(Composite parent, int style) 
    { 
     super(parent, style); 
    } 

    public Date getValue() 
    { 
     Date date = new Date(getYear(), getMonth(), getDay()); 
     return date; 
    } 
} 




public Class EmployeePart extends AbstractEditorPart(
private MyDateTime currentDate; 

public void createBody(Composite parent){ 
currentDate=Util.createDateChooserCombo(parent, toolkit, "Date:", 2); 

} 

public void save(Employee input){ 
return null; 
} 
} 

} 
+0

儘量尋找鍵碼10了。 – Lesleh

回答

0

可謂是一個稍微複雜一些比我首先想到自己的父類。

一個解決方案是爲Composite定義一個TabList,其中包含您的Widget s。 這樣你可以首先定義你希望它們被遍歷的順序。

然後將Listener添加到要穿過的每個Widget。此Listener將決定TabList中的下一個項目,並在選項卡輸入時強制關注此項目。

下面是一些示例代碼:

public static void main(String[] args) 
{ 
    Display display = Display.getDefault(); 
    Shell shell = new Shell(display); 
    shell.setLayout(new FillLayout()); 

    final Composite content = new Composite(shell, SWT.NONE); 
    content.setLayout(new FillLayout()); 

    Text first = new Text(content, SWT.BORDER); 
    Text second = new Text(content, SWT.BORDER); 

    content.setTabList(new Control[] {first, second}); 

    Listener enterListener = new Listener() 
    { 
     @Override 
     public void handleEvent(Event event) 
     { 
      /* Is it a traverse via Tab or Enter? */ 
      if(event.keyCode == SWT.CR || event.keyCode == SWT.TRAVERSE_RETURN || event.keyCode == SWT.TRAVERSE_TAB_NEXT) 
      { 
       /* Get source of event */ 
       Widget source = event.widget; 

       /* Get traverse order of content composite */ 
       Control[] tabList = content.getTabList(); 

       /* Try to find current position in the tab list */ 
       for(int i = 0; i < tabList.length; i++) 
       { 
        if(source.equals(tabList[i])) 
        { 
         /* Get the next item in the tab list */ 
         Control nextControl = tabList[(i + 1) % tabList.length]; 

         /* And force the focus on this item */ 
         nextControl.setFocus(); 
         nextControl.forceFocus(); 

         return; 
        } 
       } 
      } 
     } 
    }; 

    first.addListener(SWT.KeyUp, enterListener); 
    second.addListener(SWT.KeyUp, enterListener); 

    shell.pack(); 
    shell.open(); 

    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
      display.sleep(); 
    } 
    display.dispose(); 
} 
+0

感謝您的幫助Baz,但它並沒有happen.i遍歷文本字段沒有問題,我需要遍歷java.util.date for enterkeylistener.your編碼工作就好了文本字段,但沒有響應日期field.pls讓我知道如果有任何其他選項可用! –

+0

_什麼意思_「遍歷java.util.date」_? – Baz

+0

當我按下輸入或從日期字段焦點應該在下一個領域的選項卡。 –