是否有STYLE位可以应用于我的shell /对话框以防止水平调整大小?我希望窗口只允许垂直调整大小。
感谢。
答案 0 :(得分:6)
使用ControlListener捕获窗口的resize事件。 如果用户尝试更改窗口的宽度,则恢复其默认值。
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class TestWindow {
private static int CONST_WIDTH = 200;
public static void main(String[] args) {
Display display = new Display();
final Shell shell = new Shell(display);
shell.setBounds(shell.getBounds().x, shell.getBounds().y, CONST_WIDTH, shell.getBounds().height);
shell.setText("Test");
shell.addControlListener(new ControlAdapter() {
@Override
public void controlResized(ControlEvent e) {
Rectangle rect = shell.getBounds();
if(rect.width != CONST_WIDTH) {
shell.setBounds(rect.x, rect.y, CONST_WIDTH, rect.height);
}
}
});
shell.open();
while(!shell.isDisposed()) {
if(!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}