带有透明复合SWT的java堆栈布局
在我的需求中,我正在处理SWT。我想在点击按钮时,在复合材料的同一位置显示两种不同的形式,所以我用StackLayout创建了一个复合材料。我可以相应地渲染这两种形式(不同形式的子组合),但问题是我的一种形式是橙色背景,另一种是透明的当我从透明移动到橙色合成时,效果很好。但当我从橙色移动到透明合成物时,橙色合成物在背景中仍然可见当我切换到不同的窗口并移回我的视图时,它只显示我需要的透明组合。我试过了,但无法在点击按钮时立即获得透明合成。下面是我的代码片段
\\ the container composite with stacklayout.
bottomComposite = new Composite(parent, SWT.NO_BACKGROUND);
bottomCompositLayOut = new StackLayout();
bottomComposite.layout(true);
\\first form composite
formComposite = new Composite(bottomComposite, SWT.NONE);
GridLayout formLayout = new GridLayout(3, false);
formLayout.marginTop = 10;
formLayout.horizontalSpacing = 20;
formComposite.setLayout(formLayout);
formComposite.setBackground(orange);
GridData formCompositeData = new GridData();
formCompositeData.widthHint = 800;
formCompositeData.heightHint = 200;
formCompositeData.horizontalAlignment = SWT.CENTER;
formComposite.setLayoutData(formCompositeData);
\\Second transparent composite
progressComposite = new Composite(bottomComposite, SWT.NO_BACKGROUND);
GridLayout progressLayout = new GridLayout(1, false);
progressLayout.verticalSpacing = 1;
progressLayout.marginTop = 1;
progressComposite.setLayout(progressLayout);
//progressComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
GridData progressCompositeData = new GridData();
progressCompositeData.widthHint = 800;
progressCompositeData.heightHint = 200;
progressCompositeData.horizontalAlignment = SWT.CENTER;
progressComposite.setLayoutData(progressCompositeData);
//Works properly when I am doing
bottomComposite.topcontrol = formComposite;
//Shows other form when I made transperent composite to top control.
bottomComposite.topcontrol = progressComposite;
共 (0) 个答案