Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Blackberry 黑莓点击外场_Blackberry_Imagebutton - Fatal编程技术网

Blackberry 黑莓点击外场

Blackberry 黑莓点击外场,blackberry,imagebutton,Blackberry,Imagebutton,我正在为支持触摸的设备(950095509800,…)实现一个自定义图像按钮 我有一个问题,单击(触摸)字段外部会在聚焦字段中生成事件。(扩展字段时,位图字段时) 我可以通过将焦点移到空字段来解决这个问题,但这不是很好。 奇怪的是,这种行为适用于字段,位图字段,但不适用于按钮字段。 当ButtonField聚焦时,外部点击似乎不会生成按钮事件 我试图扩展按钮字段,但我无法摆脱那个愚蠢的按钮背景 所以我的问题,;字段和按钮字段之间的行为差异是什么,导致在字段之外生成事件 以下是我删除按钮背景的方式

我正在为支持触摸的设备(950095509800,…)实现一个自定义图像按钮 我有一个问题,单击(触摸)字段外部会在聚焦字段中生成事件。(扩展
字段时,
位图字段时

我可以通过将焦点移到空字段来解决这个问题,但这不是很好。 奇怪的是,这种行为适用于
字段
位图字段
,但不适用于
按钮字段
。 当
ButtonField
聚焦时,外部点击似乎不会生成按钮事件

我试图扩展
按钮字段
,但我无法摆脱那个愚蠢的按钮背景

所以我的问题,;
字段
按钮字段
之间的行为差异是什么,导致在
字段
之外生成事件

以下是我删除按钮背景的方式:

    // cahange button border
    setBorder(BorderFactory
            .createSimpleBorder(new XYEdges(0, 0, 0, 0)));
    setBorder(VISUAL_STATE_ACTIVE, BorderFactory
            .createSimpleBorder(new XYEdges(0, 0, 0, 0)));

您只需要在touchEvent()中为ImageButton添加一个复选框

protected boolean touchEvent(TouchEvent message) {
    //make sure the touch is withing the bounds of our Field
    if(message.getX(1) < 0 || message.getX(1) > getWidth() || message.getY(1) < 0 || message.getY(1) > getHeight()) {
        return false;
    }

    //Do your work
}
受保护的布尔touchEvent(touchEvent消息){
//确保触碰在我们场地的范围内
if(message.getX(1)<0 | | message.getX(1)>getWidth()| | | message.getY(1)<0 | | message.getY(1)>getHeight()){
返回false;
}
//做你的工作
}
触摸事件被发送到聚焦字段,即使它实际上不在字段上,您也必须返回false,以便包含该事件的管理器知道将其发送到下一个将接受它的字段(触摸打开的字段,或者如果它在空白处,则不发送)

编辑:
要删除按钮背景,请覆盖
受保护的void applyTheme(){}

是的,我知道此检查,但我的问题是有什么区别,以及为什么ButtonField只接受内部单击?顺便说一句,在此期间,我想出了如何摆脱按钮背景,所以现在buttonfield非常适合me@Janci你能分享一下你是如何获得按钮背景的吗?@TechnodHr我已经更新了我的答案,展示了如何移除按钮装饰