SWT Java:如何防止窗口resize?
我想禁用窗口大小调整。 有任何想法吗?
您可以使用two-arg构造函数指定Shell
样式位。 默认样式位是SWT.SHELL_TRIM
:
public static final int SHELL_TRIM = CLOSE | TITLE | MIN | MAX | RESIZE;
您实际上想要排除RESIZE
位。 如果您要创建自己的Shell
:
final Shell shell = new Shell(parentShell, SWT.SHELL_TRIM & (~SWT.RESIZE));
如果要扩展Dialog
,可以通过覆盖getShellStyle
来影响shell样式位:
@Override protected int getShellStyle() { return super.getShellStyle() & (~SWT.RESIZE); }
声明shell时可以控制家具。 我认为这个例子符合你的要求;
import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class FixedWindow { public static void main(String[] args) { Display display = new Display(); //final Shell shell = new Shell(display); //defaults //final Shell shell = new Shell(display, SWT.CLOSE | SWT.TITLE | SWT.MIN | SWT.MAX); //can be maximised final Shell shell = new Shell(display, SWT.CLOSE | SWT.TITLE | SWT.MIN ); // fixed but can be minimised //final Shell shell = new Shell(display, SWT.TITLE ); // fixed, uncloseable, unminimisable can only be removed by OS killing JVM. Rectangle boundRect = new Rectangle(0, 0, 1024, 768); shell.setBounds(boundRect); Rectangle boundInternal = shell.getClientArea(); shell.setText("Fixed size SWT Window."); shell.open(); final Text text = new Text(shell, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER); text.setEditable(true); text.setEnabled(true); text.setText("Oh help!"); text.setBounds(boundInternal); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }
我不确定,但我认为你可以像这样放弃SWT.Resize事件:
shell.addListener (SWT.Resize, new Listener () { public void handleEvent (Event e) { return; } });