1
A
回答
3
因为你没有说过你在何时,在哪里以及如何设置复合尺寸,所以我假设你正在设置一个事件的大小,以及setSize
适合我。
我在Win7,eclipse 4.2和JDK 1.6_b30上。参见示例代码:
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
public class Test
{
public static void main(String[] args) throws Exception
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
TabFolder folder = new TabFolder(shell, SWT.TOP);
folder.setLayout(new GridLayout());
folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
TabItem item = new TabItem(folder, SWT.NONE);
item.setText("Tab 1");
final Composite composite = new Composite(folder, SWT.BORDER);
composite.setLayout(new GridLayout());
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
Text text = new Text(composite, SWT.BORDER);
text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
text.setText("Tab 1");
Button b = new Button(composite, SWT.PUSH);
b.setText("Press");
b.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
composite.setSize(23, 43);
}
});
item.setControl(composite);
shell.setSize(300, 200);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
Before Pressing the Button
After Pressing the Button
虽然有赶上!只要您调整应用程序的大小,复合材料就会回到的原始尺寸!
也有 可能是一个问题,如果你不使用设置大小的任何事件(可能在SWT标签文件夹了一些bug或功能)。非侵入性的
hack
(不需要任何用户交互)是使用
PaintListener
。请参见下面的代码:
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
public class Test
{
public static void main(String[] args) throws Exception
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
final TabFolder folder = new TabFolder(shell, SWT.TOP);
folder.setLayout(new GridLayout());
folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
TabItem item = new TabItem(folder, SWT.NONE);
item.setText("Tab 1");
final Composite composite = new Composite(folder, SWT.BORDER);
composite.setLayout(new GridLayout());
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
Text text = new Text(composite, SWT.BORDER);
text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
text.setText("Tab 1");
folder.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
composite.setSize(23, 43);
}
});
item.setControl(composite);
shell.setSize(300, 200);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
的PaintListener
解决方案是不是一个非常优雅的解决方案,但它适合我的发展环境。
相关问题
- 1. SWT的JFace:SelectionProvider在TabFolder中
- 2. SWT TabFolder懒加载
- 3. SWT TabFolder中:古怪的绘图行为
- 4. SWT Composite Transform
- 5. 在SWT中获取活动标签TabFolder
- 6. 如何在TabFolder中嵌入SWT TableViewer?
- 7. 将TabFolder大小内容的ScrolledCompsite设置为零
- 8. SWT TabFolder垂直方向
- 9. SWT Composite出现在右边
- 10. 如何在SWT中设置MenuItem的字体大小?
- 11. SWT - 你如何重新设置一个位于另一个复合材料内的Composite的大小/设置大小?
- 12. Java SWT Composite 1 px padding
- 13. SWT Composite需要3.6.1中的包()
- 14. SWT TabFolder有什么替代方案?
- 15. 试图在SWT的选项卡中设置按钮的大小/位置
- 16. 在SWT中设置颜色
- 17. 设置Java SWT shell窗口内部区域的大小
- 18. 避免在SWT中的窗口构件中设置父窗口?
- 19. Java SWT与线程“主”java.lang.NoClassDefFoundError:org/eclipse/swt/widgets/Composite的maven异常
- 20. SWT - 如何更改TabFolder中现有TabItem的顺序
- 21. 如何设置SWT ToolItem的高度?
- 22. 将固定大小设置为SWT标签
- 23. SWT设置外壳大小以跨越多个显示器
- 24. 在swt中调整大小问题
- 25. 设置大小
- 26. 如何在树中设置treeItems的最大级别(SWT)?
- 27. 在配置中设置批量大小
- 28. SWT中不同大小的视图
- 29. 更改SWT中的字体大小
- 30. 在JScrollPane和JPanel中设置JTable的大小和JFrame的大小