我通过代码动态的添加了一个Label,代码如下:
- Java code
Label lab= new Label(shell, SWT.NONE); lab.setText("123");
但是这是的窗口上并没有出现这个Label,如果鼠标拖动窗体改变一下大小,新添加的Label就出现了,所以应该是界面刷新问题。
- Java code
Display.getCurrent().getActiveShell().pack();
上面代码刷新界面的时候,窗体的大小会改变,因为调用pack()方法,窗体会忽略以前的 setSize(),从而使窗体变为自动大小。
有一个笨办法就是在调用 pack()方法后,重新设置 setSize()方法恢复窗体大小,不好的地方是这样做窗体会闪屏。
有没有别的办法来实现刷新窗体呢。
------解决方案--------------------
重新Layout,比如 lab.getParent().layout()
------解决方案--------------------
要么shell.setLayout,设置一种布局;
要么不设布局,就用绝对布局就要用label.setBounds设置位置和大小
------解决方案--------------------
pack()方法一般不得已的情况下才用,如果窗体放不下,可以考虑用ScrolledComposite。
------解决方案--------------------