2013-07-24 3 views
1

У меня есть приложение 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"); 

         } 

} 


     ); 

ответ

1

Вы должны установить рендерер для 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; 
     } 
    }); 

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

+0

@blay ** только перед вашими утверждениями Ishould написать это утверждение ** 'final com.sun.lwuit.ComboBox Combo = new com.sun.lwuit.ComboBox (mylist.getModel());' – JavaFan

1

Вы можете работать со списком ListCellRenderer. Его полезный инструмент, посмотреть here for example

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

Если вы работаете с ListCellRenderer вы можете использовать actionLisiner так:

mylist.setRenderer(getListCellRenderer()); 
    ActionListener chooseItemActionListener = new ActionListener() { 
     public void actionPerformed(ActionEvent evt) { 
      doAction(getSelected()); 
     } 
    }; 
    mylist.addActionListener(chooseItemActionListener); 
+0

Кажется, что я буду вынужден повторно использовать этот код http://lwuit.blogspot.com/2008/07/lwuit-list-renderer-by-chen-fishbein.html, но какой метод getListCellRenderer()? – JavaFan

+0

Кажется, что я буду вынужден повторно использовать этот код http://lwuit.blogspot.com/2008/07/lwuit-list-renderer-by-chen-fishbein.html#comment-form_8868619825488006175, но какой метод getListCellRenderer() (откуда вы его получите)? - – JavaFan

+1

Нет. Вы используете в своем коде, как хотите. Список объектов, который вы работаете, - это то, что вы положили в mylist.setRenderer (getListCellRenderer()). в функции, которую вы выполняете для конкретного объекта и создаете компонент с контейнером, ярлыками и ect ', как вам нравится. – blay

1

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

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