addPointerPressed 和 addActionListener 有什么区别?

问题描述 投票:0回答:1

我有下面的示例代码:

    hi = new Form("Click Test Application", BoxLayout.y());
    Label l = new Label("Click by Program");
    hi.add(l);
    b1 = new Button("Click Button 2","DescButton");
    b1.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent ev){      
            hi.pointerPressed(b2.getAbsoluteX(), b2.getAbsoluteY());
        }
    });
    hi.add(b1);
    b2 = new Button("Button_2","DescButton");
    b2.addPointerPressedListener(new ActionListener(){
        public void actionPerformed(ActionEvent ev){      
            b2.setText("Button 2 Pressed");
        }
    });    
    b2.addPointerReleasedListener(new ActionListener(){
        public void actionPerformed(ActionEvent ev){      
            b2.setText("Button 2 Released");
        }
    }); 
    hi.add(b2);                
    hi.show();

单击 b1 后,b2 按钮显示“按钮 2 已按下”。 单击 b2 后,b2 按钮显示“按钮 2 已释放”。

addActionListener 和 addPointerPressedListener 有什么区别? 如何通过单击 b1 按钮将单击事件(addActionListener,而不是 addPointerPressedListener)发送到 b2?

或者我应该在b1中调用pointerPressed和pointerReleased来模拟点击事件?

codenameone
1个回答
0
投票

Button
您有:

b2.press();
b2.release();

触发此类事件的正确方法是哪种。

如果您使用按钮以外的组件,则始终在按下和释放时触发。

请注意,UI 事件几乎总是在发布时实现,很少在发布时实现。唯一的例外是只要按钮保持按下状态,诸如滚动之类的连续事件就会不断发生。

我们使用released有两个原因:

  • 事件可能会触发导航,并且发布可能会发送到下一个表单。
  • 用户可能会改变主意并将手指拖出按钮,此时释放可能不会触发操作。有可能这只是一个拖拽事件......
© www.soinside.com 2019 - 2024. All rights reserved.