FillLayout lay = new FillLayout(); Shell shell = new Shell(); shell.setLayout(lay); for(int i = 0; i < 10; i++) { Button but = new Button(shell, SWT.PUSH); but.setText(""+i); }没出现窗口
时间: 2024-01-14 20:05:13 浏览: 70
这段代码创建了一个 SWT 窗口并设置了 FillLayout 布局管理器,然后通过循环创建了 10 个按钮并添加到该窗口中。但是,你没有打开该窗口,因此没有看到任何界面。
要使窗口可见,需要调用 `Shell` 对象的 `open()` 方法。例如,可以在循环结束后添加以下代码:
```
shell.pack();
shell.open();
Display display = shell.getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
```
这段代码中,`shell.pack()` 方法会根据窗口中的控件自动调整窗口大小,以适应控件的大小。然后调用 `shell.open()` 方法打开窗口。接着创建一个 `Display` 对象,并在一个循环中处理窗口事件,直到窗口被关闭为止。最后调用 `display.dispose()` 方法释放资源。
注意,为了使 SWT 窗口正常工作,需要在程序中创建一个 `Display` 对象,并在主线程中处理事件。如果使用 Eclipse 等 IDE,可以根据模板创建一个 SWT 应用程序,该模板会自动生成这些代码。
相关问题
shell.setlayout()
`shell.setlayout()` 不是一个 Java 中常用的方法,因为 `shell` 不是 Java 中的内置类或接口。可能你想表达的是 SWT(Standard Widget Toolkit)中的 `Shell` 类,它是 Eclipse 平台的 GUI 工具包中的一个顶层窗口类。
在 SWT 中,`Shell` 类也有 `setLayout()` 方法,用于设置该窗口中的控件布局方式。与 Java AWT/Swing 中的布局管理器类似,SWT 中也有多种布局管理器可供选择,例如 `FillLayout`、`GridLayout`、`RowLayout` 等。通过设置 `Shell` 的布局方式,可以使窗口内的控件按照特定的规则排列,从而实现更好的用户界面设计。
FillLayout有布局data吗?代码注释
当然可以,以下是一个使用FillLayout和布局数据的示例代码(包括注释):
```java
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillData;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
public class FillLayoutExample {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("FillLayout Example");
shell.setSize(new Point(300, 200));
// 创建FillLayout布局管理器,并设置为父容器的布局
FillLayout fillLayout = new FillLayout();
shell.setLayout(fillLayout);
// 创建三个Label控件,并添加到父容器中
Label label1 = new Label(shell, SWT.NONE);
label1.setText("Label 1");
Label label2 = new Label(shell, SWT.NONE);
label2.setText("Label 2");
Label label3 = new Label(shell, SWT.NONE);
label3.setText("Label 3");
// 创建FillData布局数据,并设置给label2控件
FillData fillData = new FillData();
fillData.heightHint = 50; // 设置高度为50像素
fillData.widthHint = 50; // 设置宽度为50像素
fillData.horizontalAlignment = SWT.CENTER; // 设置水平居中对齐
fillData.verticalAlignment = SWT.CENTER; // 设置垂直居中对齐
label2.setLayoutData(fillData);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
```
在上述代码中,我们首先创建了一个FillLayout布局管理器并将其设置为父容器的布局。然后,我们创建了三个Label控件并将其添加到父容器中。最后,我们创建了一个FillData布局数据,并将其设置给第二个Label控件,以指定其大小和位置。执行该代码,将会看到三个Label控件在父容器中填充了所有可用空间,而第二个Label控件则按照FillData中的设置进行布局。
阅读全文