如何将默认MCheckBox状态文本(当前为I / 0)更改为例如YES / NO或ON / OFF?
答案 0 :(得分:3)
先生。 Daniel Kurka是MGWT中所有小部件类的作者。如果看起来&感觉不是 满足我们的要求,我们可以根据我们的要求编辑这些类并重写它们。因为它们是开源的。我在很多类上完成了这个,比如CellList,FormListEntry和MCheckBox。代码为ON / OFF而不是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.just这样的新类,将代码复制到MCheckBox中并粘贴到类MyOwnCheckBox中,在代码中找到并替换MCheckBox和MyOwnCheckBox(更改构造函数的名称)。做以下更改。
onDiv.setInnerText("ON");
offDiv.setInnerText("OFF");
最后创建对象到MyOwnCheckBox而不是MCheckBox,它会显示MCheckBox的ON / OFF。
答案 1 :(得分:1)
现在没有办法做到这一点,但没有真正的原因,复选框没有实现HasText,除了我们可能需要更新css,以便大文本不会破坏布局。
如果您认为mgwt应该实现此问题并投票支持此问题:http://code.google.com/p/mgwt/issues/detail?id=171
答案 2 :(得分: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个字符的内容都可能存在空间问题,但它与&#34;是&#34;和&#34;不&#34;对我来说。