永远不会在引导组件上调用longPointerPress()

时间:2016-03-06 17:38:40

标签: 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 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),则会调用长按。但是,我失去了主要成分的概念。

这是一个错误吗?如果没有,我怎么才能意识到我想要做什么?

2 个答案:

答案 0 :(得分:1)

我认为你应该这样试试

Button lead = new Button ....

lead.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { if (event.isLongEvent()) { //do long click event stuff }else{ //do normal click event stuff or blank if nothing to do } }

干杯。

答案 1 :(得分:0)

这不是一个错误,它是一个修复。这有效:

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");
    }
});

在引线Container上调用长按指针。