自己用swing类做个小程序遇到3个问题
  初学,问题应该比较简单,编译无错误,但是功能并没有实现  1,程序里用到了菜单,一共4个菜单项,点击不同的菜单项在窗口的内容面板中加入不同的界面问题出现了,点击第一个菜单项后,界面顺利出现了,点击第二个菜单项后,两个界面重叠    在一起了,其实我知道问题出在哪里,在awt里可以用removeAll函数解决这个问题,但是在swing里使用这个函数就运行不下去了,直接死机了
     
     想问一下,应该用什么函数。  2,程序中用到了模糊查询,输入了姓之后,点击查询,列表没反映,先说明,程序里的精确查询功能没问题,说明数据库之类的东西没发生错误,我觉得是SQL语句好象写的不对,但是不知道怎么改,模糊查询功能的代码如下:     class 模糊查询 extends JPanel implements ActionListener

     JButton button;
     JTextField text;
     Object a[][];
     Object name[]={"姓名","性别","通讯地址","联系方式"};
     JLabel label,label1,label2;
     JPanel panel1,panel2,panel3;
     JTable table;
  模糊查询()
  
  {  setLayout(new BorderLayout());
      label1=new JLabel("                                                                                           ");
      label2=new JLabel("  ");
      label=new JLabel("查找姓名");
     button=new JButton("确定");
     text=new JTextField(20);
      panel1=new JPanel();
      panel2=new JPanel();
      panel3=new JPanel();
      
     a=new Object[20][20];
     table=new JTable(a,name);
      
     panel1.add(label);
     panel1.add(text);
     
     panel2.add(new JScrollPane(table));
     panel3.add(label1);
     panel3.add(button); 
     panel3.add(label2);
     
     add(panel1,BorderLayout.NORTH); 
     add(panel2,BorderLayout.CENTER); 
     add(panel3,BorderLayout.SOUTH);
     button.addActionListener(this);
   }
   public void actionPerformed(ActionEvent e)
  {
    if(e.getSource()==button)
    { try{   
              mohuchaxun();
         }
     catch(SQLException ee)  {}
    }
  }
  
   public void mohuchaxun() throws SQLException
   { 
     String c="'"+text.getText().trim()+"%"+"'";
     String name,sex,adress,tel;
     
     int i=0;
       try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          }
  
       catch(ClassNotFoundException e) {}
     
     Connection sql=DriverManager.getConnection("jdbc:odbc:dreambird","","");
      Statement  go=sql.createStatement();
      ResultSet rs=go.executeQuery("SELECT * FROM tongxunlu WHERE 姓名 LIKE c");
  
     boolean boo=false;
      while(rs.next())
         {name=rs.getString(1);sex=rs.getString(2);adress=rs.getString(3);tel=rs.getString(4);
          
             
              a[i][0]=name;a[i][1]=sex;a[i][2]=adress;a[i][3]=tel;
              boo=true;
              i++;
             
          }
      if(boo==false)
             {JOptionPane.showMessageDialog(this,"查询无此人","错误",JOptionPane.ERROR_MESSAGE);
             }
      sql.close();
     }}    3,程序中有插入功能,和 上面的问题一样,输入具体内容后,点插入,但是数据库里没有变化插入功能代码如下:     class 插入 extends JPanel implements ActionListener
{  
   JLabel label1,label2;
   JButton button;
   JPanel panel1,panel2;
   JTextField text1,text2,text3,text4;
  插入()
   { 
     text1=new JTextField(16);
     text2=new JTextField(16);
     text3=new JTextField(16);
     text4=new JTextField(16);
     label1=new JLabel("                                                                                            ");
     label2=new JLabel("  ");
     button=new JButton("确定插入");
     panel1=new JPanel();
     panel2=new JPanel();
    setLayout(new BorderLayout());
    Box box1,box2,basebox;
    box1=Box.createVerticalBox();
    box1.add(Box.createVerticalStrut(50));
    box1.add(new JLabel("姓名"));
    box1.add(Box.createVerticalStrut(50));
    box1.add(new JLabel("性别"));
    box1.add(Box.createVerticalStrut(50));
    box1.add(new JLabel("通讯地址"));
    box1.add(Box.createVerticalStrut(50));
    box1.add(new JLabel("联系方式"));
    
    box2=Box.createVerticalBox();
    box2.add(Box.createVerticalStrut(50));
    box2.add(text1);
    box2.add(Box.createVerticalStrut(50));
    box2.add(text2);
    box2.add(Box.createVerticalStrut(50));
    box2.add(text3);
    box2.add(Box.createVerticalStrut(50));
    box2.add(text4);
    
    basebox=Box.createHorizontalBox();
    basebox.add(box1);
    basebox.add(Box.createHorizontalStrut(25));
    basebox.add(box2);
    panel1.add(basebox);
    panel2.add(label1);
    panel2.add(button);
    panel2.add(label2);
    add(panel1,BorderLayout.CENTER);
    add(panel2,BorderLayout.SOUTH);
    button.addActionListener(this);   }   public void actionPerformed(ActionEvent e)
  {
    if(e.getSource()==button)
    { try{   
              charu();
         }
     catch(SQLException ee)  {}
    }
  }
  
   public void charu() throws SQLException
   { try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          }
  
       catch(ClassNotFoundException e) {}
    
    Connection sql=null;Statement go=null; 
    String s1="'"+text1.getText().trim()+"'",
           s2="'"+text2.getText().trim()+"'",
           s3="'"+text3.getText().trim()+"'",
           s4="'"+text4.getText().trim()+"'";
    String s5="INSERT INTO tongxunlu VALUES ("+s1+","+s2+","+s3+","+s4+")";
      
   
      sql=DriverManager.getConnection("jdbc:odbc:dreambird","","");
      
      go.executeUpdate(s5);
      sql.close();
    }
      }    最后想问个小问题(这个没分)
    我在查询里用到了表格,查询以后,需要人为的点击表格,查找的内容才能在上面显示,有没有函数能直接显示一下啊,估计就是个刷新函数吧,请问是什么。。 
   因为是初学,代码可能比较垃圾,比较冗余,大家别笑话,都是这么过来的

解决方案 »

  1.   

    reXXX 逐个试呗,你没有一个能提示 字段和方法的 IDE ?比如用  Eclipse ,你写了  Conn 之后 光标放到 Conn 后面紧跟着,这时按 Alt+/ 就会自动提示 ,  Connection conn = x ;   co 这时你也按  Alt+/ ,它会提示 conn 给你选.
      

  2.   

    不好意思
    我真的是初学,就是用普通的文本文档编辑,然后javac,java运行而已
    Eclipse根本没听过。。
      

  3.   

    第一 JPanel继承了awt.Container中的remove(组件名)方法 可以使用这个
    具体错误请把原代码帖出来再说
    另外 可以使用setVisible(boolean bl);方法  bl=false隐藏 = true显示;
    第二个
    ResultSet rs=go.executeQuery("SELECT * FROM tongxunlu WHERE 姓名 LIKE "+c);
    我只看了SQL  还有其他错误请在回帖
    第三个
          sql=DriverManager.getConnection("jdbc:odbc:dreambird","","");
          
          go.executeUpdate(s5);// go?  没定义呀  不知道你是怎么编译成功的.
          sql.close();建议:从设置Sql字符串开始
    String s5="INSERT INTO tongxunlu VALUES (?,?,?,?)";
    sql=DriverManager.getConnection("jdbc:odbc:dreambird","","");
        pSta = sql.prepareStatement(s5);
        pSta.setString(1, text1.getText().trim());
        pSta.setString(2, text2.getText().trim());
        pSta.setString(3, text3.getText().trim());
        pSta.setString(4, text4.getText().trim());
        pSta.executeUpdate();
    pSta.close();
    sql.close();我只看了SQL  还有其他错误请在回帖
      

  4.   

    PhoticX朋友前两个我今天已经解决了,第一个和你解决的方法一样,但是效果不理想,但总算是可以了
                            第二个我翻了一下《数据库原理》,也改过来了
                            这40还是你的,我首先感谢你了                       第3个我还没有改出来,前面有定义啊 
                           Connection sql=null;Statement go=null;
                           就是光声明了,没有具体分配空间,我手里教材上就是这么写的
                           确实没有定义就直接用了,可能我上面说的不是很清楚,整个程序
                           确实编译了没有错误,前2个是我的小错误造成的,最后一个在点击
                           了“插入”按钮后,运行会异常,就是在dos窗口里出现各种英文那
                            种,我是看不懂,但是编译确实通过了。
      

  5.   


    Connection sql=null;Statement go=null; go = createStatement();   //go 没有初始化  加入这行!!    String s1="'"+text1.getText().trim()+"'",
               s2="'"+text2.getText().trim()+"'",
               s3="'"+text3.getText().trim()+"'",
               s4="'"+text4.getText().trim()+"'";
      

  6.   

    go = sql.createStatement();   //go 没有初始化  加入这行!!
    上面那帖写错了
      

  7.   

    第一个不理想的话 去翻翻API吧你的附加问题 加个事件试试   我没明白什么意思   
      

  8.   

    String s5="INSERT INTO tongxunlu VALUES ("+s1+","+s2+","+s3+","+s4+")";
    建议把列名也写上去。
      

  9.   

    呵呵
    问题都解决了 
     
    非常感谢 PhoticX() 的热心帮助我结贴了