如何在CellTable Gwt中设置ButtonCell的样式?

如何在CellTable Gwt中设置ButtonCell的样式?,gwt,gwt-celltable,Gwt,Gwt Celltable,如何在CellTable Gwt中设置ButtonCell的样式 我在互联网上搜索并找到了两个解决方案: -解决方案1:使用urColumn.setCellStyleName(“yourStyleName”)() 我试过了,但什么也没发生 -解决方案2:修改ButtonCell() ButtonCell nextStepButton=new ButtonCell(){ //本机button单元格没有gwt button类,因此 //在其他gwt按钮旁边看起来很奇怪。在这里修复。 @凌驾 公共无效

如何在CellTable Gwt中设置ButtonCell的样式

我在互联网上搜索并找到了两个解决方案:

-解决方案1:使用
urColumn.setCellStyleName(“yourStyleName”)()

我试过了,但什么也没发生

-解决方案2:修改ButtonCell()

ButtonCell nextStepButton=new ButtonCell(){
//本机button单元格没有gwt button类,因此
//在其他gwt按钮旁边看起来很奇怪。在这里修复。
@凌驾
公共无效渲染(
最后的背景,
最终安全HTML数据,
最终安全性(HTMLBuilder sb){
某人以““””号结尾;
如果(数据!=null){
附加(数据);
}
某人以““””号结尾;
}
};
对于解决方案2,我可以看出区别(即ButtonCell的样式发生了变化)。但是,我没有“
gwt-Button
”css类,只有“
gwtButton
”css类(请参见上面的css)。然而,当我将第二个代码中的“gwt按钮”更改为“gwtButton”时,
sb.appendHtmlConstant(“”)然后什么也没发生


那么,如何设置按钮单元格的样式,使其能够拾取
gwtButton css类

如果所发布的代码是您在页面中的代码,则选择器中会出现错误,除非您在复制到问题时出错

  • 尝试使用
    .buttonCell.gwtButton
    更改
    .buttonCell.getButton
  • 或者只需使用
    .gwtButton
[已编辑]

好的,我看到了错误,您正在将样式设置为按钮的容器,因此您必须更改选择器。在css资源中使用此选项:

.gwtButton button {
  margin: 0;
  padding: 5px 7px;
  ...
}

对我有效的方法是创建一个自定义的Button单元格类(例如,StyledButtonCell),它扩展ButtonCell,并根据我的喜好重写render方法。在下面的示例中,我指定了一个基本的引导按钮样式,还使用了一个附加图标来显示按钮文本

自定义按钮单元类(从基本ButtonCell类派生)的示例代码:

公共类StyledButtonCell扩展了ButtonCell{
/**
*构造一个新的StyledButtonCell,它将使用{@link SimpleSafeHtmlRenderer}。
*/
public StyledButtonCell(){
super(SimpleSafeHtmlRenderer.getInstance());
}
@凌驾
公共void呈现(上下文上下文、安全HTML数据、安全HTMLBuilder sb){
某人以““””号结尾;
某人以““””号结尾;
如果(数据!=null){
附加(数据);
}
某人以““””号结尾;
}
}

定义gwt表/列时对StyledButtonCell的示例引用:

... new Column<XYZClass, String>(new StyledButtonCell()) {
        @Override
        public String getValue(XYZClass object) {
            return "buttonText_goes_here";
        }
。。。新列(新StyledButtonCell()){
@凌驾
公共字符串getValue(XYZClass对象){
返回“buttonText\u goes\u here”;
}

Hi Manolo,谢谢你的回答。我尝试了.buttonCell.gwtButton,但什么也没发生。我改为.gwtButton,然后样式应用于整个单元格,而不是单元格内的按钮,这是不正确的。我只希望单元格内的按钮得到“gwtButton”风格。你可以在这里看到错误风格的图片。你能像在开发工具或firebug控制台中看到的那样发布html代码吗?嗨,Manolo,你是指实际的html/Javascript代码吗?这是上面代码()的视图源。如果你指的是其他内容,请告诉我。
               ButtonCell nextStepButton=new ButtonCell(){
                    // A native button cell doesn't have the gwt-button class, which makes it
                      // look weird next to other gwt buttons. Fix that here.
                      @Override
                      public void render(
                          final Context context,
                          final SafeHtml data,
                          final SafeHtmlBuilder sb) {
                        sb.appendHtmlConstant("<button type=\"button\" class=\"gwt-Button\" tabindex=\"-1\">");
                        if (data != null) {
                          sb.append(data);
                        }
                        sb.appendHtmlConstant("</button>");
                      }
                };
.gwtButton button {
  margin: 0;
  padding: 5px 7px;
  ...
}
public class StyledButtonCell extends ButtonCell{
/**
   * Construct a new StyledButtonCell that will use a {@link SimpleSafeHtmlRenderer}.
   */
  public StyledButtonCell() {
    super(SimpleSafeHtmlRenderer.getInstance());
  }

  @Override
  public void render(Context context, SafeHtml data, SafeHtmlBuilder sb) {
    sb.appendHtmlConstant("<button class=\"btn btn-default\" type=\"button\" tabindex=\"-1\">");
    sb.appendHtmlConstant("<i class=\"fa fa-refresh\"></i>");
    if (data != null) {
      sb.append(data);
    }
    sb.appendHtmlConstant("</button>");
  }
... new Column<XYZClass, String>(new StyledButtonCell()) {
        @Override
        public String getValue(XYZClass object) {
            return "buttonText_goes_here";
        }