繁体   English   中英

在RCPTT中使用数据绑定时,单击单选按钮不会更新布局

[英]Clicking the radio button is not updating the layout when using databinding in RCPTT

从图像中可以看到,选中了“ Right按钮,但是标签显示“ LEFT AREA ,应为“ RIGHT AREA

选中了右侧按钮,但仍显示左侧区域标签

RCPTT中使用的脚本

get-button Right | click

这是ui的示例代码段。 选中按钮后,将显示一个标签,说明单击了哪个按钮。

DataBindingContext dataBindingContext = new DataBindingContext();

IObservableValue<Boolean> left = new WritableValue<>( true, Boolean.class );
IObservableValue<Boolean> right = new WritableValue<>( false, Boolean.class );

Composite sampleComposite = new Composite( parent, SWT.NONE );
sampleComposite.setLayout( GridLayoutFactory.fillDefaults().numColumns( 2 ).create() );

Button leftBtn = new Button( sampleComposite, SWT.RADIO );
leftBtn.setText( "Left" );
dataBindingContext.bindValue( WidgetProperties.buttonSelection().observe( leftBtn ), left );

Button rightBtn = new Button( sampleComposite, SWT.RADIO );
rightBtn.setText( "Right" );
dataBindingContext.bindValue( WidgetProperties.buttonSelection().observe( rightBtn ), right );

StackLayout stackLayout = new StackLayout();
Composite stackComposite = new Composite( sampleComposite, SWT.NONE );
    stackComposite.setLayout( stackLayout );

Label leftLbl = new Label( stackComposite, SWT.NONE );
leftLbl.setText( "LEFT AREA" );

Label rightLbl = new Label( stackComposite, SWT.NONE );
rightLbl.setText( "RIGHT AREA" );

ISideEffect.create( () -> {
    stackLayout.topControl = left.getValue() ? leftLbl : rightLbl;
    stackComposite.layout();
} );

我可以通过创建自己的自定义ecl命令来解决此问题,该命令发送选择事件并取消选择同一组合中的每个单选按钮,而只需选择目标单选按钮。 看起来当您使用click命令时aut并未取消选择周围的单选按钮

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM