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,它不适合多按钮约束。它适用于每个主要组件。只需覆盖父容器中的长按钮,而不是组件本身。对我来说,这不是选择它。我必须结束在形态层面上骑行