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