2013-01-18 17 views
0

我試圖打開一個DateTime shell時,單擊Eclipse插件內的一個按鈕,該插件擴展了平臺的首選項。SWT未啓用shell

這是按鈕SelectionAdapter

@Override 
    public void widgetSelected(SelectionEvent e) { 
      super.widgetSelected(e); 
      Display display = Display.getCurrent(); 
      Shell ns = new Shell(display); 
      ns.setLayout (new RowLayout()); 
      final DateTime calendar = new DateTime (ns, SWT.CALENDAR); 
      ns.pack(); 
      ns.open(); 
      ns.forceActive(); 
      ns.setEnabled(true); 
      while (!ns.isDisposed()) { 
       if (!display.readAndDispatch()) 
       display.sleep(); 
      } 
    } 

的代碼,你可以在下面的圖像的外殼被描繪,但似乎未啓用看到。確實無法選擇任何日期,也不能關閉/調整它的大小。正如你所看到的三個botton(紅色,黃色和綠色)顯示爲灰色。 我在做什麼錯?

enter image description here

UPDATE

我試圖讓這樣的外殼:

Display display = new Display(); 
    IWorkbench workbench = PlatformUI.getWorkbench(); 
    IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); 
    Shell shell    = window.getShell(); 

但現在我得到這個enter image description here

這實際上是相當遠從我的用心。我的目的是要表明一個新的窗口,日期時間控件

UPDATE

我跟吉爾伯特的意見和定義自己的JFace對話框。 正如Lars Vogel在http://www.vogella.com/articles/EclipseDialogs/article.html中所描述的那樣,我將它創建爲TitleAreaDialog的擴展。它現在有效,但仍有一些我需要改進。

enter image description here

我想隱藏標題的大標題和隱藏/刪除幫助按鈕。 有沒有辦法做到這一點?我是否會延誤錯誤的課程?

+0

我認爲創建一個新的Shell對象是一個壞主意,有很多方法可以從Eclipse獲取它。 –

+0

抱歉,我認爲我沒有收到您的評論。 AFAIK外殼對應一個新的窗口,這是我真正想要的。問題是我無法控制它。它與你的評論有什麼關係? – Sindico

+0

請參考吉爾伯特勒布蘭科評論 –

回答

2

既然你說你正在構建一個Eclipse插件,請嘗試以下操作來獲取Shell。

IWorkbench workbench = PlatformUI.getWorkbench(); 
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); 
Shell shell    = window.getShell(); 

創建自己的殼是不是一個好主意,除非你正在構建Eclipse之外SWT應用程序。

創建您自己的Display並不是一個好主意,除非您在Eclipse之外構建SWT應用程序。

你在找什麼,我認爲是日曆的對話框。您將不得不擴展Eclipse對話框來創建自己的對話框。

+0

謝謝吉爾伯特,我試圖做你提出的建議並更新了問題 – Sindico

+2

我們不能在這個問題上來回回顧,但首先擺脫顯示代碼在您的方法中。在Eclipse之外構建SWT應用程序時,您只需編寫代碼。其次,您可能需要擴展Dialog並構建自己的對話框來顯示日曆。 –

+0

@GilbertLeBlanc我建議編輯評論到答案,因爲它比當前的身體更有用。 –