java - 如何以编程方式在 TextBox 上设置 css 错误样式

标签 java css gwt

为什么我不能将自定义 css 样式应用于单个 TextBox?

我正在尝试在单个 TextBox 上设置一些错误样式。下面的实现有什么问题?

初始化:

static final String STYLES = ErrorRes.INSTANCE.css().style();

@UiField TextBox box;
box.setStylePrimaryName(STYLES);

资源接口(interface)

interface ErrorRes extends ClientBundle {
    static final ErrorRes INSTANCE = GWT.create(ErrorRes.class);

    @Source("Error.css")
    Style css();

    interface Style extends CssResource {
        @ClassName("gwt-TextBox-error")
        String style();
    }
}

错误.css

.gwt-TextBox-error {
     border: 1px solid red !important;
}

最佳答案

如果您想在小部件上获取 gwt-TextBox-error 样式名称,您需要设置 box.setStylePrimaryName("gwt-TextBox"); - 这是默认设置。当错误发生时使用 box.setStyleDependentName("error", true); HTML 将是 class="gwt-TextBox gwt-TextBox-error"。 要清除错误样式,请使用 box.setStyleDependentName("error", false);

您可以以相同的方式使用 addStyleName("gwt-TextBox-error")removeStyleName("gwt-TextBox-error")

---更新---

因此,我尝试运行您的案例并且效果很好。首先,您需要在运行时将资源中的 css 注入(inject)页面:

ErrorRes.INSTANCE.css().ensureInjected();

我在 onModuleLoad() 的开头使用它

然后,添加错误样式使用:box.addStyleName(STYLES);box.removeStyleName(STYLES); 将其删除。

您不能将 setStylePrimaryName()setStyleDependentName() 与捆绑的 css 一起使用,因为 css 名称将被混淆。

关于java - 如何以编程方式在 TextBox 上设置 css 错误样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15359931/

相关文章:

json - 如何在 libgdx 中启用反射以对我的游戏使用 json 解析

java - 在 GWT 中,我无法获得类异常的类型签名

java - 游戏打不开,黑屏

html - CSS 中的汉堡包渲染错误

java - 扫描多个maven pom以获取不同的依赖版本

html - 如何使此显示内联

javascript - 样式化插入到 Shadow DOM 中的内容

java - 使用 GWT 的 HTTPSession

Java Sockets - 如果没有客户端尝试连接,则跳过 SocketServeraccept() 方法

java - 从 ReSTLet 中的 POST 正文获取键值对