我在尝试在RAP应用程序中获取多个徽章时遇到了很多问题。 在RAP中应用徽章:
someButton.setData(RWT.BADGE, "badge colored red");
我也想设置徽章的位置,但请注意下方没有徽章CSS支持位置。
RAP状态的限制:
要调整徽章的外观(见上文),可以使用“Widget-Badge”元素。它目前支持属性字体,颜色,背景颜色,边框和边框半径。
我已经进入了打包的default.css并使用以下方法自定义了Widget-Badge:
Widget-Badge {
background-color: #dd0000;
border: none;
border-radius: 10px;
font: 10px Verdana, "Lucida Sans", Arial, Helvetica, sans-serif;
color: #ffffff;
border-top: 12px solid blue;
border-left: 12px solid transparent;
}
将工具提示设置为始终显示和偏移的另一种尝试,但似乎无法使工具提示背景透明(我必须创建自定义变体):
Button.setToolTipText("<span style='background-color: #dd0000;border: none;border-radius: 10px;font: 10px Verdana, Arial, Helvetica, sans-serif;border-top: 0px solid transparent;border-left: 12px solid blue;'>"+00+"</span>");
我已经考虑使用裁剪区域绘制事件来绘制具有不同样式的徽章,但需要进行大量代码更改。
----编辑1 ---- 不完全得到所需的输出。
我正在调查:
static void setTestId( Widget widget, String value ) {
if( uiTestsEnabled && !widget.isDisposed() ) {
String $el = widget instanceof Text ? "$input" : "$el";
String id = WidgetUtil.getId( widget );
exec( "rap.getObject( '", id, "' ).", $el, ".attr( 'test-id', '", value + "' );" );
}
}
private static void exec( String... strings ) {
StringBuilder builder = new StringBuilder();
builder.append( "try{" );
for( String str : strings ) {
builder.append( str );
}
builder.append( "}catch(e){}" );
JavaScriptExecutor executor = RWT.getClient().getService( JavaScriptExecutor.class );
executor.execute( builder.toString() );
}
看看我是否可以获得难以捉摸的RAP“在DOM级别上看不到的生成的id”,以便我可以进行后期渲染CSS操作。
我也调查过:
button.setData(SWT.SKIN_ID, "customID");
但似乎无法让它发挥作用。
答案 0 :(得分:0)
控制徽章的位置似乎是一个有用的功能,您可能希望file an enhancement request看看RAP维护者的想法。
缺少徽章定位的另一种可能的解决方法可能是ControlDecoration
。
您可以指定应放在控件旁边的任意图像。 SWT.TOP
,SWT.BOTTOM
,SWT.LEFT
,SWT.RIGHT
,SWT.CENTER
的组合可用于指定展示位置。你可能需要动态创建合适的图像来渲染&#39;数字。
ControlDecoration的另一个不同之处在于它放在控件的旁边,而不是部分位于控件之上。