2010-03-12 60 views
1

我有一个带有两个RadioButtonField对象的屏幕。默认情况下,第一个RadioButtonField将显示一个矩形以显示其所选内容,如果将所选内容更改为另一个RadioButtonField或页面上的其他按钮和文本框,矩形将移动。我想知道的是...有没有办法隐藏显示选择/边框的边框?BlackBerry - RadioButtonField,选择时隐藏边框

回答

1

,如果你在4.6及更高版本,尝试setBorder()没有边缘:

alt text http://img139.imageshack.us/img139/672/rbnoborder.jpg

class Scr extends MainScreen { 
    EditField editField = new EditField("edit field", "text"); 
    RadioButtonGroup rbGroup = new RadioButtonGroup(); 
    RadioButtonField rbField = new RadioButtonField("First field"); 
    RadioButtonField rbField2 = new RadioButtonField("Second field"); 
    ButtonField buttonField = new ButtonField("button"); 
    Border invisibleBorder = 
     BorderFactory.createSimpleBorder(new XYEdges(0,0,0,0));  
    public Scr() { 
     add(editField); 
     rbGroup.add(rbField); 
     rbGroup.add(rbField2); 
     add(rbField); 
     add(rbField2);  
     add(buttonField);  
     editField.setBorder(invisibleBorder); 
     rbField.setBorder(invisibleBorder); 
     rbField2.setBorder(invisibleBorder);   
     buttonField.setBorder(invisibleBorder);    
    } 
} 

如果在4.5和更低,尽量覆盖drawFocus(),让它空:

alt text http://img214.imageshack.us/img214/672/rbnoborder.jpg

class Scr extends MainScreen { 
    EditField editField = new EditField("edit field", "text") { 
     protected void drawFocus(Graphics graphics, boolean on) { 
     } 
    }; 
    RadioButtonGroup rbGroup = new RadioButtonGroup(); 
    RadioButtonField rbField = new RadioButtonField("First field") { 
     protected void drawFocus(Graphics graphics, boolean on) { 
     } 
    }; 
    RadioButtonField rbField2 = new RadioButtonField("Second field") { 
     protected void drawFocus(Graphics graphics, boolean on) { 
     } 
    }; 
    ButtonField buttonField = new ButtonField("button") { 
     protected void drawFocus(Graphics graphics, boolean on) { 
     } 
    }; 

    public Scr() { 
     add(editField); 
     rbGroup.add(rbField); 
     rbGroup.add(rbField2); 
     add(rbField); 
     add(rbField2); 
     add(buttonField); 
    } 
} 
+0

谢谢!这有助于我发现边界也可以只针对特定状态进行更改,例如:rbField.setBorder(Field.VISUAL_STATE_FOCUS,invisibleBorder); – 2010-03-15 21:47:59

1

您需要覆盖对象的drawFocus方法,方法是对其进行扩展。

+0

已经尝试过,并没有调用super.drawFocus,但它并没有为我删除边框。 – 2010-03-14 17:18:57

+0

啊,我想我明白了为什么,从Max的回答中可以看出,你的解决方案并不适合我。我试图编译4.7扩展drawFocus只是4.6和以下的解决方案。我可能应该在我的帖子中提到我的JDE版本! – 2010-03-15 21:26:22