Browse Source

REPORT-56010 【组件背景分离】组件复用-组件不显示

标题,设置边框后设计期内边框不显示

【问题原因】
1. 在无标题情况下,XWTitleLayout和普通的XBorderStyleWidgetCreator一样,通过
initBorderAndBackgroundStyle区初始化背景和边框,即使它自身没有样式模型,从而获得
一个默认的灰色边框(图表块和报表块的一般组件需要默认灰色边框), 遮住了图表块和报表块的边框
2. 在有标题情况下,此时XWTitleLayout从BodyCreator处,获取了需要绘制的边框,但如果之后切换
为无标题,再更新边框样式,则新边框对象会设置到BodyCreator上,而旧边框对象因为没有被清除,所以
会继续保留在XWTitleLayout上,然后覆盖了新的边框
3. 背景也有一样的效果

【改动思路】
1. XWTitleLayout重新实现initBorderAndBackgroundStyle方法
2. 若无标题,则将XWTitleLayout的边框/背景等重制为空
【review建议】
final/10.0
Starryi 3 years ago
parent
commit
5479bfbe43
  1. 4
      designer-form/src/main/java/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java
  2. 7
      designer-form/src/main/java/com/fr/design/designer/creator/XWTitleLayout.java

4
designer-form/src/main/java/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java

@ -210,6 +210,10 @@ public class XBorderStyleWidgetCreator extends XWidgetCreator{
reshuffleBorderPaintingEffectIfTitleExists(titleParent, titleCreator, bodyXCreator); reshuffleBorderPaintingEffectIfTitleExists(titleParent, titleCreator, bodyXCreator);
reshuffleBackgroundPaintingEffectIfTitleExists(titleParent, titleCreator, bodyXCreator); reshuffleBackgroundPaintingEffectIfTitleExists(titleParent, titleCreator, bodyXCreator);
} else {
titleParent.setBorder(null);
titleParent.setBorderImage4Painting(null, 0.0);
titleParent.setBackground4Painting(null, 0.0);
} }
} }
} }

7
designer-form/src/main/java/com/fr/design/designer/creator/XWTitleLayout.java

@ -62,6 +62,13 @@ public class XWTitleLayout extends DedicateLayoutContainer {
this.bodyBackgroundOpacity4Painting = opacity; this.bodyBackgroundOpacity4Painting = opacity;
} }
@Override
protected void initBorderAndBackgroundStyle() {
setBorder(null);
setBorderImage4Painting(null, 0.0);
setBackground4Painting(null, 0.0);
}
@Override @Override
protected void initXCreatorProperties() { protected void initXCreatorProperties() {
super.initXCreatorProperties(); super.initXCreatorProperties();

Loading…
Cancel
Save