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
Blackberry 黑莓触摸不通过领域_Blackberry_Java Me_Touch Event - Fatal编程技术网

Blackberry 黑莓触摸不通过领域

Blackberry 黑莓触摸不通过领域,blackberry,java-me,touch-event,Blackberry,Java Me,Touch Event,我有一个经理正在处理触摸点击 为了使管理器可聚焦,我有一个字段作为背景并可聚焦,该字段在聚焦时会改变颜色 问题是,我在这个管理器上有多个字段(不可聚焦),比如LabelField、BitmapField等等 如果用户单击其中一个非聚焦字段,则不会考虑对单元格的单击。 但是,如果用户在两个不可聚焦的字段之间单击(然后单击背景字段),则会考虑单击,并且效果良好 我需要一些点击通过设置为真,我怎么做呢 p.S.:我不想让所有字段都聚焦,因为当使用轨迹球时,它会穿过每个字段,我只想选择整个管理器,而不是

我有一个经理正在处理触摸点击

为了使管理器可聚焦,我有一个字段作为背景并可聚焦,该字段在聚焦时会改变颜色

问题是,我在这个管理器上有多个字段(不可聚焦),比如LabelField、BitmapField等等

如果用户单击其中一个非聚焦字段,则不会考虑对单元格的单击。 但是,如果用户在两个不可聚焦的字段之间单击(然后单击背景字段),则会考虑单击,并且效果良好

我需要一些点击通过设置为真,我怎么做呢


p.S.:我不想让所有字段都聚焦,因为当使用轨迹球时,它会穿过每个字段,我只想选择整个管理器,而不是其中的元素。管理器实际上会获得点击事件-通常它只会传递它们。但如果你愿意,你可以处理它们。下面的代码演示了我找到的最简单的方法,以确保我按照自己的意愿处理所有事情。在触摸屏和非触摸屏手机上试用

VerticalFieldManager testVFM = new VerticalFieldManager(Manager.USE_ALL_WIDTH) {
    protected boolean touchEvent(TouchEvent message) {
        int x = message.getX( 1 );
        int y = message.getY( 1 );
        if( x < 0 || y < 0 || x >= getExtent().width || y >= getExtent().height ) {
                // Outside the field
                return false;
        }
        if ( message.getEvent() == TouchEvent.UNCLICK ) {
            Status.show("Manager Clicked");
            return true;
        }
        return super.touchEvent(message);
    }
};
LabelField testlab = new LabelField("test", LabelField.FIELD_HCENTER);
testVFM.add(testlab);
LabelField testlab2 = new LabelField("test2", LabelField.FIELD_HCENTER);
testVFM.add(testlab2);
testVFM.add(new NullField() {
    protected boolean navigationClick(int status, int time){
        Status.show("NullField Clicked");
        return true;    
    }
}); // So Manager can get focus
VerticalFieldManager testVFM=新的VerticalFieldManager(Manager.USE\u ALL\u WIDTH){
受保护的布尔touchEvent(touchEvent消息){
intx=message.getX(1);
int y=message.getY(1);
如果(x<0 | | y<0 | | x>=getExtent().width | | y>=getExtent().height){
//场外
返回false;
}
if(message.getEvent()==TouchEvent.UNCLICK){
状态显示(“经理点击”);
返回true;
}
返回super.touchEvent(消息);
}
};
LabelField testlab=新的LabelField(“test”,LabelField.FIELD\u HCENTER);
testVFM.add(testlab);
LabelField testlab2=新的LabelField(“test2”,LabelField.FIELD_HCENTER);
testVFM.add(testlab2);
add(新的NullField(){
受保护的布尔导航单击(int状态,int时间){
显示状态(“已单击空字段”);
返回true;
}
}); // 这样管理者才能集中精力

如果你想更精确,测试应该是
x>=getExtent()。宽度
,对吗?处理点击管理器的好方法。。。多谢各位+1@Nate-从没想过,但我认为你是对的!答案已更新。