我注意到不能保证在调用了pointerPressed方法之后调用组件pointerReleased方法。
使用Conponent派生程序(可处理指针事件)-在所有情况下都可以通过哪种方式来获得有关指针释放事件的通知?
说我的自定义组件应该是绿色的,在点击时会变成红色。当指针不再被按下时,我如何保证它再次变为绿色?
新示例-使用isStickyDrag()派生的组件返回true-记录了指针事件-按下该组件然后垂直拖动时,周围的Container实例滚动-没有指针释放:
Form hi = new Form("Hi World", BoxLayout.y());
hi.setScrollableY(true);
Component component = new Component() {
@Override
protected Dimension calcPreferredSize() {
return new Dimension(120, 120);
}
@Override
public void paint(Graphics aGraphics) {
aGraphics.setColor(0x000000);
aGraphics.drawRoundRect(getX(), getY(), getWidth() - 1, getHeight() - 1, 20, 20);
}
@Override
protected boolean isStickyDrag() {
return true;
}
protected int getDragRegionStatus(int x, int y) {
return Component.DRAG_REGION_IMMEDIATELY_DRAG_XY;
};
@Override
public void pointerPressed(int x, int y) {
super.pointerPressed(x, y);
Log.p("pointerPressed(" + x + ", " + y + ")");
}
@Override
public void pointerReleased(int x, int y) {
super.pointerReleased(x, y);
Log.p("pointerReleased(" + x + ", " + y + ")");
}
};
hi.add(component);
hi.show();
答案 0 :(得分:0)
它应该像这样重写isStickyDrag方法:
protected boolean isStickyDrag() {
return true;
}
它已经定义了它,在这种情况下,应该始终接收指针释放事件。