0

動的にサイズ変更できるようにしたい結果は次のとおりです (Gimp のスキルが低くて申し訳ありません)。 ここに画像の説明を入力 別の SWT レイアウトを調べましたが、必要なものはありませんでした。そこで、ウィンドウをキャンバスに分割し、さまざまなオブジェクトをキャンバスに挿入しました。私の問題が から来ていることはわかっていますが.setBounds()、オブジェクトを自由に配置する方法がとても簡単にわかりませんでした。

コードを変更してウィンドウのサイズを動的に変更するが、同様の結果が得られるようにするにはどうすればよいですか?

ここに基本的な例があります:

 public class Main 
 {
  private void images(Canvas Header)
  {
    // in Header Canvas located British flag image
    imgGbFlag = new Label(Header, SWT.NONE);
    imgGbFlag.setBounds(674, 10, 32, 24);
    imgGbFlag.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
    imgGbFlag.setImage(SWTResourceManager.getImage(Main.class, "/Images/gb.png"));

    // in Header Canvas located German flag image
    imgDeFlag = new Label(Header, SWT.NONE);
    imgDeFlag.setBounds(712, 10, 32, 24);
    imgDeFlag.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
    imgDeFlag.setImage(SWTResourceManager.getImage(Main.class, "/Images/de.png"));

    // in Header Canvas located French flag image
    imgFrFlag = new Label(Header, SWT.NONE);
    imgFrFlag.setBounds(750, 10, 32, 24);
    imgFrFlag.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
    imgFrFlag.setImage(SWTResourceManager.getImage(Main.class, "/Images/fr.png"));
   }

   public void Gui(Shell shell)
   { 
     Canvas header = new Canvas(shell, SWT.NONE);
     header.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
     header.setBounds(0, 0, 792, 113);
     images(header);
   } 
}
4

1 に答える 1

2

FormLayout を使用して動的なサイズ変更を行います。サイズ変更の問題に最適で使いやすいレイアウトです。シェルと Canvas オブジェクトのレイアウトを formlayout として設定する必要があります。これにより、すべてのウィジェットの位置とサイズをハードコーディングせずに % で実際に決定できるようになります。

setBounds メソッドでハードコーディングされた値を指定しました。回避するようにしてください。そうしないと、サイズ変更の問題が常に発生します。

于 2013-10-08T09:56:18.647 に答える