【问题标题】:BlackBerry - RadioButtonField, hide border on selectBlackBerry - RadioButtonField,在选择时隐藏边框
【发布时间】:2010-03-15 20:25:09
【问题描述】:

我有一个带有两个 RadioButtonField 对象的屏幕。默认情况下,第一个 RadioButtonField 会在其周围显示一个矩形以显示其被选中,如果您将选择更改为页面上的其他 RadioButtonField 或其他按钮和文本框,则该矩形会移动。我想知道的是......有没有办法隐藏这个显示选择/边框的边框?

【问题讨论】:

    标签: user-interface blackberry focus radio-button border


    【解决方案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);
        }
    }
    

    【讨论】:

    • 谢谢!这帮助我发现边框也只能针对特定状态更改,例如:rbField.setBorder(Field.VISUAL_STATE_FOCUS, invisibleBorder);
    【解决方案2】:

    您需要通过扩展对象的drawFocus 方法来覆盖它。

    【讨论】:

    • 已经尝试过了,并没有调用 super.drawFocus 但它没有为我删除边框。
    • 啊,我想我明白了为什么,从 Max 的回答中你的解决方案对我不起作用。我正在尝试针对 4.7 进行编译,扩展 drawFocus 只是 4.6 及以下版本的解决方案。我可能应该在我的帖子中提到我的 JDE 版本!
    猜你喜欢
    • 1970-01-01
    • 2018-11-30
    • 2013-04-12
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多