我正在以编程方式列出容器列表 . 这些容器具有两个单元格的表格布局 . 在第一个单元格中,我显示一个复选框,在第二个单元格中是一个多按钮:
在某些行中,我想禁用用户点击复选框 . 我已经尝试在复选框上使用.setHidden(true),setVisible(true)等..但是在这种情况下复选框是不可见的(这也是可以接受的)但在这种情况下它不保留它的行空间和数据没有垂直对齐(如图中所示) . 有谁知道如何实现这个???灰色和禁用复选框会很棒,但不显示它并保留它的空间是可以接受的 .
这是代码:
Container list = findContainerOrders(f);
list.setScrollableY(true);
LinkedHashMap htJSONObject;
//al is a ArrayList
for(int i=0; i < al.size(); i++){
htJSONObject = (LinkedHashMap)al.get(i);
Container cr = new Container();
TableLayout gr = new TableLayout(1, 2);
gr.setGrowHorizontally(true);
cr.setLayout(gr);
final MultiButton b = new MultiButton();
b.setName((String)htJSONObject.get("text1"));
b.setTextLine1((String)htJSONObject.get("text2"));
b.setTextLine2((String)htJSONObject.get("text3"));
b.setTextLine3((String)htJSONObject.get("text4"));
b.setUIIDLine1("MultiLine1");
b.setUIIDLine2("MultiLine2");
b.setUIIDLine3("MultiLine1Right");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
//some action here
}
});
CheckBox cb = new CheckBox();
cb.setName((String)htJSONObject.get("text1"));
String sSomeCondition = (String)htJSONObject.get("Condition");
//If this condition equals "NO" than I want to disable the checkbox
if (sSomeCondition.equals("NO")) {
// I've tried this but it doesn't work good
//cb.setHidden(true);
//cb.setHidden(true, true);
//cb.setVisible(true);
//cb.setEnabled(false);
//TODO - disable checkbox code....???
}
else {
cr.addComponent(cb);
}
cr.addComponent(b);
list.addComponent(cr);
}
当我使用“setEnabled(false)”时,陈在他的回答中说,复选框被禁用,但它的外观是相同的 . 我的主题中的复选框有禁用样式,我可以更改复选框背景,但我想更改复选框矩形的颜色 .
我试图通过在主题“常量”选项卡中添加常量“checkBoxUncheckDisImage”并添加另一个图像来替换复选框矩形图像,但它不起作用 .
如何更改已禁用复选框的默认复选框图像?