2011-08-08 22 views
2

私はそのようなコードとコンポジットの上部の境界線描画したい:
SWt:コントロールの境界線の色は何ですか?

final Composite c = new Composite(parent, SWT.NONE); 
     c.setLayout(new FormLayout()); 
     c.addPaintListener(new PaintListener(){ 

      @Override 
      public void paintControl(PaintEvent e) { 
       int x = c.getBounds().x; 
       int y = c.getBounds().y; 
       e.gc.setForeground(SWTResourceManager.getColor(0)); 
       e.gc.drawLine(x, y-23, x + c.getBounds().width, y-23); 
      } 

     }); 

のが、どのように私は境界が同じルック&はデフォルトの境界線として感じていることができますか?コンポジットの右Y座標を取得するにはどうすればよいですか?

私はコンポジットに上端のみが必要ですが、それ以外の方法はありますか?

答えて

1

1)

あなたはこのために3つの複合材料を使用することができます。 1残りの2つが配置されたコンポジット。

のように:(境界線と非常に小さい)

MainComposite

  • TopComposite
  • CenterComposite(あなたの情報が置かれている)

2)

内部コンポジットにはLayoutDataを使用でき、情報。しかし、あなたは上部と下部にParent Compositeを見るでしょう。

  • を見てみましょうGridData.verticalIndent
  • GridData.heightHint
1

これは

:-)非自明な問題であるEclipseのUIFormsを見てください - 特にorg.eclipse.ui.forms.widgets.FormToolkit.BorderPainter ...

1

チェックDetect system settings snippetどのようにシステムの色を得ることができるかを示しています。

あなたのケースでは

Color borderColor = display.getSystemColor(SWT.COLOR_WIDGET_BORDER); 
+0

SWT.COLOR_WIDGET_NORMAL_SHADOWは国境がデフォルトのように見えるようになります。 – CaiNiaoCoder

関連する問題