2017-06-06 11 views
0

私はラベルとプログレスバーを表示したいと思っていたeclipseプラグインを開発しています。残念ながら、私はlabelとprogressBarのsetBounds属性でsizeを変更することはできません。私座標:長方形{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

レイアウトとsetBoundsを混在させることはできません。レイアウトは境界をオーバーライドします。 setLayoutを削除すると、境界が機能します。

ただし、setBoundsを使用すると、さまざまな画面で問題が発生する可能性があります。そのため、setBoundsが設定されていないレイアウトを使用してください。

また、Eclipseウィザード、ジョブなどは、すでに標準の進行状況インジケータを提供しています。

+0

ありがとうございます。今働いていますが、疑問があります。画面サイズに関係なくプラグインUIを作成する方法は? – adi

+1

私はレイアウト[Understanding Layouts](https://www.eclipse.org/articles/Article-Understanding-Layouts/Understanding-Layouts.htm)を使っていると言いました。それがあなたの問題を解決した場合、答えを受け入れることを忘れないでください。 –

関連する問題