Java me 如何在单击LUIT列表项时执行操作

Java me 如何在单击LUIT列表项时执行操作,java-me,lwuit,midlet,lwuit-list,lwuit-combobox,Java Me,Lwuit,Midlet,Lwuit List,Lwuit Combobox,我有一个LWUIT应用程序,它有一个涉及一些项目的列表 列表本身已添加到组合框中 1/当我专注于列表项时,我如何改变列表项的颜色 final com.sun.lwuit.List mylist = new com.sun.lwuit.List(); mylist.addItem("one"); mylist.addItem("two"); mylist.addItem("three"); mylist.addItem("fou

我有一个LWUIT应用程序,它有一个涉及一些项目的列表

列表本身已添加到组合框中

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");

                        }

}


        );

您可以使用ListCellRenderer。它的有用工具, 看

您可以实现GetListCellRenderComponent(..)——此函数返回屏幕上显示的、UI上负责的组件

如果使用ListCellRenderer,可以使用actionLisiner,如下所示:

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

要更改组合框的颜色,您应该从ResourceEditor中修改组合框焦点样式


如果您要将列表添加到
组合框
,我认为您应该将
ActionListener
放入
组合框
,而不是像现在这样放入
列表
。试试这个事实。

您应该将渲染器设置为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;
        }
    });

这很好。

似乎我将被迫重用该代码,但什么是getListCellRenderer()方法?似乎我将被迫重用该代码,但什么是getListCellRenderer()方法(从何处获得)?——不,你在你的代码中使用你想要的方式。您工作的对象列表是您放入mylist.setRenderer(getListCellRenderer())中的对象列表。在函数中,您可以对特定对象进行强制转换,并使用容器、标签等构建组件。我编写了此方法>
公共组件getListCellRenderComponent(List List,java.lang.object value,int index,boolean isSelected){com.sun.lwuit.ComboBox myCombo=new com.sun.lwuit.ComboBox(List.getModel());value=list.getModel();if(isSelected){myCombo.setFocus(true);myCombo.getStyle().setbGTTransparency(100);}else{myCombo.setFocus(false);myCombo.getStyle().setbGTTransparency(0);}返回myCombo;}
到目前为止我是正确的吗?否。与他一起创建类和wotk很有帮助。在构造函数中,您可以像复选框一样插入组件。您不需要调用list.getMode(),因为您可以在java.lang.Object中获得值。值(需要对对象进行强制转换)。在mylist.setRenderer(getListCellRenderer())中加载列表@blay仅在您的语句之前编写此语句
final com.sun.lwuit.ComboBox Combo=new com.sun.lwuit.ComboBox(mylist.getModel())