gpt4 book ai didi

java - 布局和打开的顺序

转载 作者:行者123 更新时间:2023-12-02 05:39:29 24 4
gpt4 key购买 nike

打开 SWT 对话框时调用 shell.open() 和 shell.layout() 的顺序有什么意义吗?

使用 Eclipse 编辑器插件,可以自动生成Dialog 类的默认代码。 open() 方法的默认代码如下所示:

/**
* Open the dialog.
* @return the result
*/
public Object open() {
createContents();
shell.open();
shell.layout();
Display display = getParent().getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
return result;
}

在此代码中,首先发生 open(),然后是layout()。我的期望是,人们实际上想要在打开之前先布局 shell。

...
shell.layout();
shell.open();
...

我的假设是,一旦调用 open() 就会进行绘制,因此效率低下且不必要,因为屏幕会在重新排列时绘制外壳。然而,除了效率这一理论上的问题之外,以任何顺序执行这两件事都没有明显的区别。

给定的默认值是否正确,还是应该更改?这样做有好处吗?

最佳答案

绘制不是在 open() 调用中完成的,这只会将绘制事件添加到待处理事件列表中。

排队的绘制事件将在显示 readAndDispatch() 调用循环中进行处理。

因此,openlayout 的执行顺序并不重要,因为这两个调用都在 readAndDispatch 调用之前。

关于java - 布局和打开的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24634552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com