`
JasonRight
  • 浏览: 72513 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

FormAttachment (Control control)的参数必须是属于同一个composite

    博客分类:
  • Java
 
阅读更多

总的Composite使用的是FormLayout,其中上面一个子Composite使用的是GridLayout,三个button所在的Composite命名为buttonComp. 要想设置下面的text在buttonComp的左边,是不可行的。

 

		Composite comp = new Composite(parent, SWT.BORDER);
		comp.setLayout(new FormLayout());
		
		Composite aboveComp = createAboveComposite(comp);
		
		Text textBelow = new Text(comp, SWT.BORDER);
		textBelow.setText("Below");
		textBelow.setToolTipText("Below tool tip");
		
		FormData aboveCompFormData = new FormData();
		aboveCompFormData.top = new FormAttachment(0);
		aboveCompFormData.left = new FormAttachment(0);
		aboveCompFormData.right = new FormAttachment(100);
		aboveComp.setLayoutData(aboveCompFormData);
		
		FormData textFormData = new FormData();
		textFormData.top = new FormAttachment(aboveComp);
		textFormData.left = new FormAttachment(0);
		textFormData.right = new FormAttachment(buttonComp);
		textBelow.setLayoutData(textFormData);

 

实际运行的效果是下面的Text不见了。这是因为在FormData.getRightAttachment方法中

FormAttachment getRightAttachment (Control control, int spacing, boolean flushCache) {
	if (cacheRight != null) return cacheRight;
	if (isVisited) return cacheRight = new FormAttachment (0, getWidth (control, flushCache));
	if (right == null) {
		if (left == null) return cacheRight = new FormAttachment (0, getWidth (control, flushCache));
		return cacheRight = getLeftAttachment (control, spacing, flushCache).plus (getWidth (control, flushCache));
	}
	Control rightControl = right.control;
	if (rightControl != null) {
		if (rightControl.isDisposed ()) {
			right.control = rightControl = null;
		} else {
			if (rightControl.getParent () != control.getParent ()) {//must be same parent
				rightControl = null;
			}
		}
	}

 

 计算出来的numerator为0

 

如果上面的Composite是遗留的类,不能更改。想要实现下面的Text在buttonComp的左边,可以在下面的Composite中建相同的buttonComp, setVisible(false).

分享到:
评论

相关推荐

    Control-M 作业配置手册

    - 表是Control-M中的一个重要概念,它定义了作业执行时需要的数据源和参数。 - 在定义作业时,用户需要指定作业类型(如命令、文件传输、数据库操作等),设置执行环境,定义作业顺序,以及处理输入和输出文件。 ...

    关于LabView的XControl

    XControl是LabView中的一个重要概念,它是自定义控件(Custom Control)的一种高级形式,为开发者提供了更强大的功能和灵活性。本篇文章将深入探讨LabView的XControl,帮助你了解其创建过程及其在实际应用中的价值。...

    ControlDesk培训教程

    ControlDesk是一个集成的硬件在环(HIL)仿真环境,它被广泛应用于汽车、航空航天以及其他工程领域的实时测试和数据分析。本教程主要目的是让使用者了解ControlDesk的基本操作,实验管理,虚拟仪表应用,数据分析,...

    LabVIEW制作XControl的详细方法

    XControl是LabVIEW中的一个核心概念,它是一种可重用的用户界面组件,类似于传统编程中的控件或类库。通过创建XControl,开发者可以封装复杂的算法或者功能,使得在其他VI(Virtual Instrument)中调用变得更加方便...

    c# winform usercontrol用户控件传值

    在C# WinForm应用开发中,用户控件(UserControl)是一种自定义控件,它允许开发者组合多个标准控件并作为一个单一的组件使用。在实际项目中,我们经常需要在窗体(Form)和用户控件之间传递数据,以便实现更复杂的...

    C# 使用委托方式Usercontrol与主窗体进行消息传递

    例如,我们可以定义一个名为`MessageEventHandler`的委托,它接受两个参数:一个表示事件源的对象,另一个是自定义的事件数据类。 ```csharp public delegate void MessageEventHandler(object sender, ...

    C# 使用Usercontrol与主窗体进行消息传递

    例如,我们可以创建一个名为`ControlValueChanged`的委托,它接受一个字符串参数,表示新值。 ```csharp public delegate void ControlValueChangedEventHandler(string newValue); ``` 2. **创建事件**:接着,在...

    Tab Control List Control Combo box Control Tree Control SDK的使用实例

    在SDK中,你可以使用`CreateWindow`或`CreateWindowEx`函数创建一个Tab Control,并通过`TCM_INSERTITEM`消息添加选项卡。Tab Control常用于设置面板、软件配置界面等,它提高了界面的可读性和用户操作的效率。 2. ...

    domino xpags开发 控件 传参数给custom control

    这里的`compositeData.title`就是一个传入Custom Control的字符串参数,`compositeData.dsn[compositeData.fieldName]`则动态地绑定了数据源(`compositeData.dsn`)的一个字段(`compositeData.fieldName`)。...

    st电机控制工作台(MotorControl Workbench)中文翻译介绍.pdf

    1. **电机控制工作台(Motor Control Workbench)**:这是一款专门设计的PC软件工具,它为电机控制应用提供了一个图形化的编程环境,可以有效地帮助工程师设计和测试电机控制算法。它通过生成的参数头文件来配置ST...

    SAP table control使用介绍

    在屏幕设计器中创建一个 Table Control 需要指定一个名称(例如 `tab_ctrl_name`),并且设置相关的属性,如显示的列数等。 2. **ABAP 程序中的声明** 在 ABAP 程序中,需要使用 `CONTROLS <tab_ctrl_name> TYPE...

    电机控制工作台(MotorControl Workbench)中文翻译介绍.pptx

    它通过提供一个直观的图形用户界面(GUI),使得开发者可以轻松配置各种电机控制相关的参数,并自动生成相应的头文件。 #### 二、MotorControl Workbench的特点与功能 1. **参数配置**: 用户可以通过GUI来配置电机...

    Form中显示Usercontrol通过委托事件方法实现Form与Usercontrol的数据传递

    这里,`DataTransferEventArgs`是一个自定义的事件参数类,包含要传递的数据。 2. **定义事件**:在UserControl类中,声明一个基于上述委托的事件。 ```csharp public event DataTransferEventHandler DataTransfer...

    MFC中改变list control满足条件的某一行的背景颜色

    你可以定义一个函数,如`bool IsRow符合条件(int nItem)`,返回true表示该行满足条件,false表示不满足。 5. **改变行的背景色**: 如果IsRow符合条件()返回true,可以使用RedrawItems()函数重绘指定范围的行,...

    list control 改变某一行颜色

    在Windows编程中,List Control...需要注意的是,这只是一个基本的示例,实际应用中可能需要处理更多细节,如颜色渐变、鼠标悬停效果等。此外,考虑到性能问题,应该避免不必要的重绘操作,确保自定义绘制的效率。

    ControlCAN.dll

    ControlCAN.dll是一个动态链接库(DLL)文件,主要用于与周立功公司的CAN(Controller Area Network)PCI接口卡进行通信。CAN总线是一种广泛应用于汽车、工业自动化和其他嵌入式系统的串行通信协议,它以其高可靠性...

    IEWebControl.exe

    标题:“IEWebControl.exe” 描述:这是一个与IE浏览器控件相关的可执行文件,主要用于在应用程序中内嵌Internet Explorer的功能。 IEWebControl.exe是Microsoft开发的一个ActiveX控件,它允许开发者在Windows应用...

    MFC可编辑的ListControl

    在Microsoft Foundation Classes (MFC)库中,ListControl(或CListCtrl)是一个非常重要的类,用于创建类似于Windows资源管理器中的列表视图控件。它允许用户以表格形式显示和操作数据,提供了丰富的功能,如多列、...

Global site tag (gtag.js) - Google Analytics