以下是我希望能够动态调整大小的结果(抱歉我的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);
}
}
答案 0 :(得分:2)
使用FormLayout进行动态调整大小,这是调整问题大小的最佳且易于使用的布局。 您需要将布局设置为shell和Canvas对象的formlayout,以便您可以用%表示所有小部件的位置和大小,而不是硬编码。
您已在setBounds方法中提供了硬编码值,请尽量避免使用这些值,否则您将始终面临调整大小问题。