隐藏元素,同时在页面布局中保留其空间

时间:2016-09-21 07:49:34

标签: codenameone

我以编程方式制作容器列表。这些容器具有两个单元格的表格布局。在第一个单元格中,我显示一个复选框,在第二个单元格中是一个多按钮:

enter image description here

在某些行中,我想禁用用户点击复选框。我曾尝试在复选框上使用.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);                      
    }  

当我使用&#34; setEnabled(false)&#34;就像陈在他的回答中说的那样,复选框被禁用但它的外观是一样的。我的主题中的复选框有禁用样式,我可以更改复选框背景,但我想更改复选框矩形的颜色。

changed background

我尝试通过添加常量&#34; checkBoxUncheckDisImage&#34;来做到这一点。在一个主题&#34;常数&#34;选项卡并添加另一个图像来替换复选框矩形图像,但它没有工作。

enter image description here

如何更改已禁用复选框的默认复选框图像?

1 个答案:

答案 0 :(得分:2)

setEnabled(false)应该这样做,确保你的主题中的CheckBox有一个禁用的样式