1

我将如何将默认MCheckBox状态文本(当前为 I/0)更改为,例如,YES/NO 或 ON/OFF?

4

3 回答 3

3

Daniel Kurka 先生是 MGWT 中所有小部件类的作者。如果外观不符合我们的要求,我们可以编辑这些类并根据我们的要求重写它们。因为它们是开源的。我在 CellList、FormListEntry 和 MCheckBox 等许多类上都这样做了。开/关代码而不是 I/O

public MyOwnCheckBox(CheckBoxCss css) {
    this.css = css;
    css.ensureInjected();
    setElement(DOM.createDiv());
    addStyleName(css.checkBox());

    onDiv = DOM.createDiv();
    onDiv.setClassName(css.on());
    onDiv.setInnerText("ON");
    getElement().appendChild(onDiv);

    middleDiv = DOM.createDiv();
    middleDiv.setClassName(css.middle());
    Element middleContent = DOM.createDiv();
    middleContent.setClassName(css.content());
    middleDiv.appendChild(middleContent);
    getElement().appendChild(middleDiv);

    offDiv = DOM.createDiv();
    offDiv.setClassName(css.off());
    offDiv.setInnerText("OFF");
    getElement().appendChild(offDiv);

    addTouchHandler(new TouchHandlerImplementation());

    setValue(true, false);

}

编写一个像 MyOwnCheckBox 这样的新类。只需复制 MCheckBox 中的代码并粘贴到您的类 MyOwnCheckBox 中,在代码中找到 MCheckBox 并将其替换为 MyOwnCheckBox(更改构造函数的名称)。进行以下更改。

onDiv.setInnerText("ON");

offDiv.setInnerText("OFF");

最后创建对象到 MyOwnCheckBox 而不是 MCheckBox,它会显示 MCheckBox 的 ON/OFF。

于 2013-04-03T06:47:53.407 回答
1

现在没有办法做到这一点,但是除了我们可能需要更新 css 以便大文本不会破坏布局之外,没有真正的原因复选框不实现 HasText。

如果您认为 mgwt 应该实现此功能并为此问题投票:http ://code.google.com/p/mgwt/issues/detail?id=171

于 2012-09-29T11:13:24.860 回答
1

好吧,在不创建模仿 MCheckBox 的新类的情况下,完成同样事情的一种简单方法是执行以下代码:

CheckBoxCss css = MGWTStyle.getTheme().getMGWTClientBundle().getCheckBoxCss();
String offClass = css.off();
String onClass = css.on();
NodeList<Node> checkBoxElems;

mIsSingleSkuBox = new MCheckBox(css);

checkBoxElems = mIsSingleSkuBox.getElement().getChildNodes();
for( int i = 0; i < checkBoxElems.getLength(); i++ )
{
    Element openElem = (Element) checkBoxElems.getItem(i);
    String className = openElem.getClassName();

    if( className.equals( offClass))
    {
        openElem.setInnerText("No" );
    }
    else if( className.equals( onClass))
    {
        openElem.setInnerText("Yes" );
    }
}

它可能会出现超过 3 个字符的空间问题,但对我来说,它与“是”和“否”一致。

于 2014-07-25T01:39:16.530 回答