Как выполнить действие при нажатии элемента списка LWUIT

У меня есть приложение LWUIT, у которого есть список, включающий некоторые элементы.

Сам список был добавлен в Combobox.

1 / Как мне изменить цвет элемента списка, когда я на нем фокусируюсь?

      final com.sun.lwuit.List mylist =  new com.sun.lwuit.List();

      mylist.addItem("one");

      mylist.addItem("two");

      mylist.addItem("three");

      mylist.addItem("four");

       final com.sun.lwuit.ComboBox  combo = new  com.sun.lwuit.ComboBox (mylist.getModel());

      final com.sun.lwuit.Form ff = new com.sun.lwuit.Form();

       ff.addComponent(combo);

2 / Я хочу выполнить действие, когда я нажимаю (или дважды щелкаю) элемент,

Интерфейс ActionListener не сделал это для меня, кто-то может направить меня?

         mylist.addActionListener(new ActionListener()

         {

           public void actionPerformed(ActionEvent ev)

                       {

               System.out.println("java");

                        }

}


        );

3 ответа

Решение

Вы должны установить рендер для ComboBox и можете использовать как setRenderer, так и setListCellRenderer, но setListCellRenderer устарела, чем использовать setRenderer:

    combo.setRenderer(new ListCellRenderer() {
        public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected) {
            Label l = new Label(String.valueOf(value));
            l.getStyle().setBgColor(0xffaa00);
            return l;
        }

    public Component getListFocusComponent(List list) {
            Label l = new Label(String.valueOf(list.getSelectedItem()));
            l.getStyle().setBgColor(0x00ff00);
            return l;
        }
    });

это работает хорошо.

Чтобы изменить цвет ComboBox Вы должны изменить ComboBoxFocusстиль из ResourceEditor.

Если вы добавляете список в ComboBoxЯ думаю, что вы должны поставить ActionListener к ComboBox не для List как вы делаете. Попробуйте это факты.

Вы можете работать с ListCellRenderer. Это полезный инструмент, посмотрите здесь, например,

Вы можете реализовать getListCellRendererComponent(..)- эта функция возвращает компоненты, отображаемые на экране и отвечающие за пользовательский интерфейс.

Если вы работаете с ListCellRenderer, вы можете использовать actionLisiner следующим образом:

mylist.setRenderer(getListCellRenderer());
    ActionListener chooseItemActionListener = new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            doAction(getSelected());
        }
    };
    mylist.addActionListener(chooseItemActionListener);
Другие вопросы по тегам