在JTabbedPane上有两个Panel,每个都有四个下拉框,每个下拉框的数据都是从数据库读取的.当选择
JTabbedPane时发生改变事件,来改变下拉框的值,但是当我改变的时候它的值并没有改变,而是原来读取的值,是怎么回事呢?
 String []chooseName=new String[40];
    try {
        con = pp.getConnection();
        stmt=con.createStatement();
        
        if(CHANGE==0)
        {
            QUERYSTR="select cField  from codetable where cTablename='custom'";
            rs= stmt.executeQuery(QUERYSTR);
            while(rs.next())
           {
            chooseName[value]=String.valueOf(rs.getString("cField"));
             value++;                     
           }
        }
        if(CHANGE==1)
       {
           QUERYSTR="select cField  from codetable where cTablename='INSIDE'";
           rs= stmt.executeQuery(QUERYSTR);
           while(rs.next())
           {
          chooseName[value]=String.valueOf(rs.getString("cField"));
          value++;                     
          }
          CustomerChoose1 = new JComboBox(chooseName);
          CustomerChoose2 = new JComboBox(chooseName);
          CustomerChoose3 = new JComboBox(chooseName);
          CustomerChoose4 = new JComboBox(chooseName);

解决方案 »

  1.   

    我把第一个Panel中的所有下拉框在事件发生的时候移到了Panel中,也就是两个Panel共用一套下拉框,在事件发生的时候我把装下拉框的Panel加入所改变的Panel
      

  2.   

    比如说我有四个下拉框,每个下拉框中的内容是从数据库中读取出来的,给了一个字符串数组,当我改变JTabbedPane中的Panel的时候,下拉框开始填充其他的值,也是把这些值添加到数组中,然后加近来的,也就是改变选择JTabbedPane时候就改变了SQL语句,也就改变了添入下拉框的值,但是当我运行的时候它把值填入下拉框中,当我改变JTabbedPane的时候下拉框的值没有变,还是原来运行时候的数据
      

  3.   

    public void stateChanged(ChangeEvent e) {
      CHANGE=jTabbedPane1.getSelectedIndex();
        if(CHANGE==0)
      {  chooseData();
          p1.add(panelGUI);//把组键加到p1上       System.out.println(QUERYSTR);
      }
        if(CHANGE==1)
        {
          chooseData();
          p2.add(panelGUI);
          System.out.println(QUERYSTR);
       }
        if(CHANGE==2)
       {
         chooseData();
         p3.add(panelGUI);
       }
       if(CHANGE==3)
         {
           chooseData();
           p4.add(panelGUI);
         }     if(CHANGE==4)
       {
         chooseData();
          p5.add(panelGUI);
       }
      }
    public void  chooseData()
    {
      int value=0;
       String []chooseName=new String[40];
        try {
            con = pp.getConnection();
            stmt=con.createStatement();        if(CHANGE==0)
            {
                QUERYSTR="select cField  from codetable where cTablename='custom'";
                rs= stmt.executeQuery(QUERYSTR);
                while(rs.next())
               {
                chooseName[value]=String.valueOf(rs.getString("cField"));
                 value++;
               }
            }
            if(CHANGE==1)
           {
               QUERYSTR="select cField  from codetable where cTablename='INSIDE'";
               rs= stmt.executeQuery(QUERYSTR);
               while(rs.next())
               {
              chooseName[value]=String.valueOf(rs.getString("cField"));
              value++;
              }
           }
           if(CHANGE==2)
          {
            QUERYSTR="select cField  from codetable where cTablename='Detach'";
            rs= stmt.executeQuery(QUERYSTR);
            while(rs.next())
            {
              chooseName[value]=String.valueOf(rs.getString("cField"));
              value++;
            }
          }
          if(CHANGE==3)
          {
            QUERYSTR="select cField  from codetable where cTablename='TOUCH'";
            rs= stmt.executeQuery(QUERYSTR);
            while(rs.next())
            {
              chooseName[value]=String.valueOf(rs.getString("cField"));
              value++;
            }
          }
          if(CHANGE==4)
          {
            QUERYSTR="select cField  from codetable where cTablename='Customer'";
            rs= stmt.executeQuery(QUERYSTR);
            while(rs.next())
            {
              chooseName[value]=String.valueOf(rs.getString("cField"));
              value++;
            }
          }          CustomerChoose1 = new JComboBox(chooseName);
              CustomerChoose2 = new JComboBox(chooseName);
              CustomerChoose3 = new JComboBox(chooseName);
              CustomerChoose4 = new JComboBox(chooseName);
              CustomerChoose5 = new JComboBox(chooseName);
              CustomerChoose5.setBounds(new Rectangle(90, 3, 141, 24));
              CustomerChoose2.setBounds(new Rectangle(90, 2, 141, 24));
              CustomerChoose1.setBounds(new Rectangle(90, 3, 141, 24));
              CustomerChoose4.setBounds(new Rectangle(90, 3, 141, 24));
              CustomerChoose3.setBounds(new Rectangle(90, 3, 141, 24));
            }
          catch (SQLException ex1) {
          }
    }
      

  4.   

    第一个CHANGE的范围是否在CHOOSEDATA可控范围内,也就是说STATECHANGED改变后,choosedata是否能感应到,
    第二,customerchoose1,customerchoose2,customerchoose3,customerchoose4..
    重新引用别的对象后,包含那些对象的面版,比如你的“panelGUI”必须重新清空一下内容,再重新导入你的customerchoose1,customerchoose2,customerchoose3,customerchoose4,否则包含还是原来的Jcombox