无法强制选择器在按钮按下时显示

Posted

技术标签:

【中文标题】无法强制选择器在按钮按下时显示【英文标题】:Cannot force a Picker to show up on button press 【发布时间】:2018-05-02 04:49:36 【问题描述】:

在我的 CN1 应用程序中有一个Multibutton。当我按下它时,我希望触发在其addActionListener 方法中定义的Picker 操作。为此,我将我的 sn-p 基于https://www.codenameone.com/manual/events.html

所以在Multibutton addActionListener 方法中我添加了

            listeners.fireActionEvent(new ActionEvent(picker, ActionEvent.Type.PointerPressed));

其中 listeners 是 EventDispatcher 对象,picker 是 Picker 对象。

在选择器addActionListener我添加了

            listeners.addListener(e);

但是,当我按下 Multibutton 时,Picker 不会被触发,尽管当我按下选取器(用于测试目的的布局)并验证选择时,它会打印出事件是 PointerPressed 而实际组件是 Picker .

那么当用户按下(多)按钮时直接“打开” Picker 是否可以实现,以便用户不必按下按钮,然后按下 Picker 并最终验证选择。他们只需按下按钮并验证选择。

编辑 我加了

   listeners.addListener(new ActionEvent(picker, ActionEvent.Type.PointerPressed));

picker.addActionListener 方法之前,但现在我明白了 ActionEvent cannot be cast to ActionListener 关于对fireActionEvent 的调用。

非常感谢任何帮助!

【问题讨论】:

【参考方案1】:

是的,当用户单击(多)按钮时,可以打开选取器。 试试这个代码:

Form hi = new Form("Hi World", BoxLayout.y());
MultiButton multiButton = new MultiButton("MultiButton");
Picker picker = new Picker();
multiButton.addActionListener(l -> 
    picker.pressed();
    picker.released();
);
picker.setType(Display.PICKER_TYPE_STRINGS);
picker.setStrings("String 1", "String 2", "String 3");
picker.setSelectedStringIndex(0);
picker.addActionListener(l -> 
    Log.p("Picker selected string: " + picker.getSelectedString());
);
hi.add(multiButton).add(picker);
hi.show();

【讨论】:

简单高效!它按预期工作。我仍然想知道为什么会有这个fireActionEvent。无论如何,谢谢@FrancescoGalgani listeners.addListener(new ActionEvent(picker, ActionEvent.Type.PointerPressed)); 正在向侦听器添加一个动作事件。您正在寻找fireActionEvent @ShaiAlmog 我把这个 sn-p 中的一切都搞砸了!然后我尝试创建一个new ActionListener<ActionEvent>(),并将其添加到listeners,但无法使用fireActionEvent 启动它。 @FrancescoGalgani 的解决方案非常完美。我不知道我是否真的必须经历这两种状态(即pressedreleased)。 如果你做其中之一,它不会起作用,所以你需要两个。

以上是关于无法强制选择器在按钮按下时显示的主要内容,如果未能解决你的问题,请参考以下文章

安卓按钮选择器

如何在按下按钮的同时选择两个下拉选项时显示隐藏div

如何在按钮单击时显示日期选择器?

用户按下按钮时弹出日期选择器[重复]

自定义表格视图单元格中的 UITextField。点击单元格/文本字段时显示选择器视图

为啥 Windows 任务管理器在写入非常大的文件时显示内存增加?我应该担心吗? [关闭]