import java.awt.*;
import java.awt.event.*;public class ch1 extends Frame implements ItemListener
{    Choice size1,size2;    Panel p1, p2, p3, p4;    Label e1, e2;    TextField text1;    TextField text2;
    
    static int i=0;    static String[] a = new String[10];
    public static void main(String[] args)
    {
        new ch1();    }    public ch1()
    {
        System.out.println("1");
        size1 = new Choice();
        size2 = new Choice();
        e1 = new Label("设备维修编号");
        e2 = new Label("设备编号");        text2 = new TextField(20);
        p1 = new Panel();
        p1.add(e1);
        size1.add("1000000");
        size1.add("140000000000");
        size1.add("180000000");
        size2.add("k");
        size2.add("kkk");
        size2.add("kkkkk");
        p1.add(size1);
        p1.add(e2);
        p1.add(size2);
        
        //p1.add(text2);
        setLayout(new FlowLayout());
        add(p1);
        setSize(800,600);
        setVisible(true);
        
        size1.addItemListener(this);
  
        size2.addItemListener(this);
       
//System.out.println("2");
    }    //@Override
    public void itemStateChanged(ItemEvent e)
    {
//System.out.println("3");        
Choice ctemp;
        String s;
        if (e.getItemSelectable() instanceof Choice)
        {   
            //int i=0;
            ctemp = (Choice) (e.getItemSelectable());
            s = ctemp.getSelectedItem();
            a[i] = s;
            i++;
            
System.out.println("i="+i);
System.out.println(s);
System.out.println(a[i]);
        }    }
}
我用数组a[]把在下拉菜单的选择保存下来,但是为什么每次都显示数组中的数据是空的呢?

解决方案 »

  1.   

    这两句为什么一个显示的是我选择的,另一个又是空的呢?
    System.out.println(s);
    System.out.println(a[i]);
      

  2.   

                ctemp = (Choice) (e.getItemSelectable());
                s = ctemp.getSelectedItem();
                a[i] = s;
                i++;//你把这个去掉啊
                
    System.out.println("i="+i);
    System.out.println(s);
    System.out.println(a[i]);i++之后 a[i]就是下一个下标了
      

  3.   

    谢谢colachens!确实是i++的问题,应该放在最后,可以.但是这段程序有这样一个问题:如果我按顺序选好了第1个和第2个下拉菜单后,两次选择的值分别保存在a[0]和a[1]中,回头再去改第1个菜单的时候,新选择的值就保存a[2]中,如何让多次选择第1个下拉菜单,它的值永远只保存在a[0]中?
      

  4.   

    好好读一下api。看看源码就OK了
      

  5.   

    如何让多次选择第1个下拉菜单,它的值永远只保存在a[0]中?判断一下吧ctemp = (Choice) (e.getItemSelectable());
    s = ctemp.getSelectedItem();

                if("1000000".equals(ctemp.getItem(0))){
                 a[0] = s;
                }else{
                 a[1] = s;
                }
      

  6.   

    public void itemStateChanged(ItemEvent e)
        {
    //System.out.println("3");        
    Choice ctemp;
            String s;
            if (e.getItemSelectable() instanceof Choice)
            {   
                //int i=0;
                ctemp = (Choice) (e.getItemSelectable());
                s = ctemp.getSelectedItem();
                a[i] = s;
                i++;
                
    System.out.println("i="+i);
    System.out.println(s);
    System.out.println(a[i]);
            }还有一个问题就是:只有在这个程序段中a[0]和a[1]才有值,其他的地方则还是没有值.
      

  7.   

    只需要保存两个值。
    只需要static String[] a = new String[2];就可以了啊