我有一个基本问题。我开发了一个 Python 组件,该组件仅将一个简单属性的值打印到控制台屏幕,并开发了一个仅运行该组件的波形。
我正在尝试创建一个显示当前属性值(字符串)并允许我更改属性值的组件控制面板。当我更改属性的值时,我希望打印到控制台窗口的值也发生更改。我的理解是我需要将属性绑定到控制面板上的一个文本框。
我尝试按照文档(http://redhawksdr.github.io/Documentation/mainch24.html)第 24.4.1 节中的绑定示例,将它们的绑定代码添加到由SCA 组件控制面板向导。但是,当我查看控制面板时,出现错误:
在“刷新组件”期间发生内部错误。
null 参数:验证领域不能为 null
我对 Java 相当陌生,但我猜我收到错误是因为在创建 SCA 组件的本地副本时出现了一些问题(在下面的代码中名为“组件”的变量)。
这是我的控制面板代码:
public void createPartControl(final Composite main) {
main.setLayout(new GridLayout(2, false));
propValue = new Text(main, SWT.BORDER);
propValue.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
}
public void refresh() {
Job refreshJob = new Job("Refresh Component") {
@Override
protected IStatus run(IProgressMonitor monitor) {
// bind text box to component property value
final ScaComponent component = getInput();
EMFDataBindingContext context = new EMFDataBindingContext();
IObservableValue observable = SCAObservables.observeSimpleProperty(component,"someText");
context.bindValue(WidgetProperties.text().observeDelayed(5000, propValue),observable);
return Status.OK_STATUS;
}
};
refreshJob.setSystem(true);
refreshJob.schedule();
}
作为参考,我在 RHEL 5.8 上运行 REDHAWK 版本 1.8.2。