Как выполнить действие при нажатии элемента списка 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);