在未设置限制的情况下,我的标签未在下面的代码中按预期显示。 我在shell中创建了一个Composite,因为我只希望背景图像出现在这个合成中。
在这种情况下应该绑定什么?我可以根据标签的文本获得最佳界限吗?
Display display = PlatformUI.createDisplay();
Shell shell = new Shell(display);
shell.setText("Header);
Composite main = new Composite(shell, SWT.NONE);
main.setBounds(10, 5, 775, 505);
InputStream is = getClass().getResourceAsStream("/resources/bg.png");
Image bg = new Image(display, is);
main.setBackgroundImage(bg);
main.setBackgroundMode(SWT.INHERIT_DEFAULT);
Label label = new Label(main, SWT.NONE);
//label.setBounds(0, 0, 400,100); // not showing if commented away
label.setText("Label 1");
答案 0 :(得分:3)
这适用于Linux(Eclipse 3.6.2,Java 1.6.0.26):
public class StackOverflow
{
public static void main(String[] args)
{
Display display = Display.getDefault();
Shell shell = new Shell(display);
shell.setText("Header");
Composite main = new Composite(shell, SWT.NONE);
main.setLayout(new GridLayout(1, false));
Image bg = new Image(display, "resources/bg.png");
main.setBackgroundImage(bg);
main.setBackgroundMode(SWT.INHERIT_DEFAULT);
Label label = new Label(main, SWT.NONE);
label.setLayoutData(new GridData(GridData.FILL_BOTH));
label.setText("Label 1");
main.pack();
main.setBounds(10, 5, 775, 505);
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
}
}