Codenameone 永远不会在lead组件上调用longPointerPress()

Codenameone 永远不会在lead组件上调用longPointerPress(),codenameone,Codenameone,当一个组件被设置为容器中的主组件时,它的longPointerPress()方法永远不会被调用 考虑以下示例: final Button lead = new Button("Lead") { @Override public void longPointerPress(int x, int y) { super.longPointerPress(x, y); // Never invoked!!! Dialog.show("", "Long poin

当一个组件被设置为容器中的主组件时,它的
longPointerPress()
方法永远不会被调用

考虑以下示例:

final Button lead = new Button("Lead") {
  @Override
  public void longPointerPress(int x, int y) {
      super.longPointerPress(x, y);
      // Never invoked!!!
      Dialog.show("", "Long pointer press at (" + x + "," + y + ")", "OK", null);
  }};

// --------------------------------
// | Label | Lead | Another label |
// --------------------------------
final Container c = BoxLayout.encloseX(new Label("Label"), lead, new Label("Another label"));
c.setLeadComponent(lead);
永远不会调用
longPointerPress()
。但是,如果我设置了
c.setLeadComponent(null)
,则会调用长按。然而,我失去了领先组件的概念


这是虫子吗?如果没有,我怎么知道我在做什么?

我想你应该这样做

按钮引线=新按钮

lead.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件evt){
if(event.isLongEvent()){
//做长点击事件的事情
}否则{
//执行正常的单击事件内容,如果无需执行,则为空
}
}


干杯。

这不是一个bug,而是一个补丁。这是有效的:

Form hi = new Form("LongPress", new BoxLayout(BoxLayout.Y_AXIS));
hi.add(new MultiButton("Long Press") {
    @Override
    public void longPointerPress(int x, int y) {
        System.out.println("Long press");
    }
});

长指针按下在lead
容器上调用。谢谢你的建议。但是,我想我之前尝试过这个,但没有成功。1.为什么这被认为是一个修复方法?我希望一旦有了lead组件,它也会捕获长按下。2.你提出的解决方案适用于多按钮,但是呢像我这样的例子,多按钮不够用吗?PS:我画的例子是一个简化的例子;我有一个更复杂的UI,它不适合多按钮约束。它适用于每个主要组件。只需覆盖父容器中的长按钮,而不是组件本身。对我来说,这不是选择它。我必须结束在形态层面上骑行