Невозможно заставить Пикер появляться при нажатии кнопки - PullRequest
0 голосов
/ 02 мая 2018

В моем приложении CN1 есть Multibutton. Когда я нажимаю на него, я хочу, чтобы действие Picker, определенное в его методе addActionListener, было запущено. Для этого мой фрагмент основан на https://www.codenameone.com/manual/events.html.

Итак, в методе Multibutton addActionListener я добавил

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

где слушатели - это объект EventDispatcher, а средство выбора - объект Picker.

В сборщике addActionListener Я добавил

            listeners.addListener(e);

Но средство выбора не срабатывает, когда я нажимаю кнопку Multibutton, хотя, когда я нажимаю на средство выбора (которое предназначено для целей тестирования) и проверяю выбор, оно печатает, что событие равно PointerPressed, а фактический компонент равен Picker .

Таким образом, можно непосредственно «открыть» сборщик, когда пользователь нажимает (мульти) кнопку, чтобы пользователю не нужно было нажимать кнопку, затем нажать сборщик и, наконец, подтвердить выбор. Им нужно только нажать кнопку и подтвердить выбор.

EDIT Я добавил

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

до picker.addActionListener метода, но теперь я получаю ActionEvent cannot be cast to ActionListener относительно звонка на fireActionEvent.

Любая помощь высоко ценится!

1 Ответ

0 голосов
/ 02 мая 2018

Да, можно открыть средство выбора, когда пользователь нажимает кнопку (Multi). Попробуйте этот код:

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();
...