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 进行动态调整大小,它是调整大小问题的最佳且易于使用的布局。您需要将布局设置为您的 shell 和 Canvas 对象的 formlayout,以便您可以根据 % 而不是硬编码来实际决定所有小部件的位置和大小。

您在 setBounds 方法中给出了硬编码值,请尽量避免使用它们,否则您将始终面临调整大小的问题。

于 2013-10-08T09:56:18.647 回答