2017-06-06 109 views
0

我正在開發一個eclipse插件,其中我想顯示一個標籤和一個進度條。但不幸的是,我無法更改它們的大小。無論我在setBounds屬性中提及的標籤和progressBar大小,我的座標:矩形{3,3,70,15}和{矩形3,21,170,17}eclipse插件setBounds屬性不工作

下面是我的處理代碼:

private ProgressBar progressBar; 
@Override 
public Object execute(ExecutionEvent event) throws ExecutionException { 

     Display display = Display.getDefault(); 

     Shell p_shell = new Shell(display,SWT.DIALOG_TRIM); 

     p_shell.setText("Translating.."); 

     p_shell.setLayout(new RowLayout(SWT.VERTICAL)); 

     p_shell.setSize(250, 70); 

     Label label = new Label(p_shell, SWT.NONE); 

     label.setBounds(10, 20, 180, 20); 
     //LINE 101 gives Rectangle {3, 3, 70, 15} 

     label.setText("Please wait ..."); 

     progressBar = new ProgressBar(p_shell, SWT.SMOOTH); 

     //progressBar.setBounds(10, 50, 200, 20); 
     //LINE 100 gives Rectangle {3, 21, 170, 17} 

     progressBar.setBounds(new Rectangle(5, 30, 150, 10)); 
     //LINE 100 gives Rectangle {3, 21, 170, 17}   

     progressBar.setMinimum(30); 

     progressBar.setMaximum(100); 

     p_shell.open(); 

     System.out.println("progress bar ==> " + progressBar.getBounds());//LINE 100 

     System.out.println("label ==> " + label.getBounds());//LINE 101 


     while(!p_shell.isDisposed()){ 

      if(!display.readAndDispatch()){ 
       display.sleep(); 
      } 
     } 
     } 

我無法繼續further.Any幫助將不勝感激。

+0

null setLayout。但這不是一個好習慣。 – msagala25

回答

2

您不能將Layout與setBounds混合 - 佈局將覆蓋邊界。如果您刪除setLayout,則界限將起作用。

但是,使用setBounds可能會在不同屏幕上出現問題,因此您應該嘗試使用不帶setBounds的佈局進行此項工作。

另請注意,Eclipse嚮導,Jobs和其他東西已經提供了標準的進度指示器。

+0

謝謝你..它現在工作。但我有一個懷疑。如何使獨立的屏幕尺寸的插件用戶界面? – adi

+1

就像我說的使用佈局 - [理解佈局](https://www.eclipse.org/articles/Article-Understanding-Layouts/Understanding-Layouts.htm)。如果它解決了你的問題,不要忘記接受答案。 –