save方法写到包含左右两边Panel的主容器类里。
左右两边的类分别提供统一的读写数据方法!

解决方案 »

  1.   

    改变resultset的变量为public 就可以了吧
      

  2.   

    回复9p;我现在就是按照你说的那样作的,但是不行。因为左边的panel是动态加载的,
    如果save方法写在主容器内,调用左边的panel里的相应的读取数据textfield.gettext()
    取不到数据,全部为空。不过在左边的panel里面还是可以读取数据textfield.gettext()的。
    不知道如何是好。 回复ielinjie:你说把reseltset设置为public,但是我现在的问题是从左边的panel里面无法
    gettext()。
      

  3.   

    我现在把这个问题详细讲述以下:
    主frame -- frmmain
    frmmain上面的按钮 button_save
    frmmain上面的按钮 button_new
    左边的Tree  -- jTreeMp
    右边固定的panel --panel_main
    右边的动态的panel  -- panel_dwps
    panel_dwps里面  textfield1,textfield2...
    panel_dwps里面的按钮button_save1我点中Tree的某个节点,然后点按钮button_new
    执行代码:
      void jButton_add_actionPerformed(ActionEvent e)
      {
        Panel_dwps panel_dwps = new Panel_dwps();
        jPanelMain.removeAll();
        jPanelMain.add(panel_dwps);    jPanelMain.revalidate();
        panel_dwps.setColProtect(true);
        panel_dwps.ps_add();  }用户然后在动态加载的panel_dwps中进行录入工作
    在panel_dwps里面有如下的方法来获取textfield数值并保存到数据库
      public String ps_save()
      {
        String ps_code = new String();
        String ps_name = new String();
        long ps_no = 100;
        double ps_tc;
        int ps_class,ps_subclass,ps_maxv,ps_tn;
        String ps_note = new String();
        String sql_add = new String();      //新增状态下的厂站保存
          ResultSet rsps = null;
          //自动取得厂站编号
          rsps = conn.executeQuery("SELECT max(ps_no) as ps_maxno FROM power_station ");
          try {
            while (rsps.next()){
              //if里面要用getString,因为null的话无法被getInt得到
              if (rsps.getString("ps_maxno") != null){
                ps_no = rsps.getInt("ps_maxno") + 1;
                System.out.println(ps_no);}          else
                ps_no = 100;
            }
            rsps.close();
          }
          catch(Exception ex) {
            ex.printStackTrace();
          }      //取得用户录入的数据      ps_name = jTextPsname.getText();
          ps_code = jTextPscode.getText();
          //将string转化为double型的例子
          ps_tc = Double.valueOf(jTextPstc.getText()).doubleValue();
          ps_note = jTextPsnote.getText();
          //将string转化为int型的例子
          ps_tn = Integer.parseInt(jTextPstn.getText().trim());
          ps_class = JCBPsclass.getitemIntvalue(JCBPsclass.getSelectedIndex());
          //ps_subclass = JCBPssubclass.getitemIntvalue(JCBPssubclass.getSelectedIndex());
          ps_subclass = 1;
          ps_maxv = JCBPsmaxv.getitemIntvalue(JCBPsmaxv.getSelectedIndex());      sql_add = "INSERT INTO power_station "    +
               "VALUES ("                  +
                "'" + ps_no + "', "       +
                "'" + ps_name + "', "    +
                "'" + ps_class + "',"     +
                "'" + ps_subclass + "', "  +
                "'" + ps_code + "', "  +
                "'" + ps_maxv + "', "  +
                "'" + ps_tn + "', "  +
                "'" + ps_tc + "', "  +
                "'" + ps_note + "' "  +
                ")";      try {
            System.out.println(sql_add);
            conn.executeInsert(sql_add);
            op.showMessageDialog(null,"厂站数据保存成功!");
        }
          catch(Exception ex) {
            op.showMessageDialog(null,"厂站数据保存失败!");
            ex.printStackTrace();
          }    return ps_name;
      }如果在主frame的button_save中调用此方法
      void jButton_save_actionPerformed(ActionEvent e) {
        nodename = panel_dwps.ps_save();
        System.out.println("ps_name = " + nodename);
        insertNode(nodename);  //新增树节点  }
    则编译不报错,但是运行和单步调试都发现Gettext取的都是空值。如果在panel_dwps里的button_save1中调用此方法
      void jButton_save1_actionPerformed(ActionEvent e) {
        ps_save();
      }
    则Gettext一切正常。主Frame的属性声明部分如下:
    public class frmmain extends JFrame {
      Panel_dwps panel_dwps = new Panel_dwps();
      Panel_dwmp panel_dwmp = new Panel_dwmp();基本情况如此。
    希望各位高手救我!不胜感激!
      

  4.   

      void jButton_add_actionPerformed(ActionEvent e)
      {
        Panel_dwps panel_dwps = new Panel_dwps();  //这里的panel_dwps 用局部变量
        panel_dwps = new Panel_dwps();             //使用-----------|
        jPanelMain.removeAll();                                     |
        jPanelMain.add(panel_dwps);                                 |
                                                                    |
        jPanelMain.revalidate();                                    |
        panel_dwps.setColProtect(true);                             |
        panel_dwps.ps_add();                                        |
                                                                    |
      }                                                             |
                                                                    |
    /////////                                                       |
    public class frmmain extends JFrame {                           |
      Panel_dwps panel_dwps = new Panel_dwps();                     |
      Panel_dwmp panel_dwmp = new Panel_dwmp(); <--------------------                   
      

  5.   

    你的jButton_add_actionPerformed中的panel_dwmp 并不是你的frmmain 中的panel_dwmp 
      

  6.   

    专门写一个简单的传递数据的类就可以了,把你往树上添加节点的方法定义成public.并把这个方法所在类的一个引用传递到save的那个类中.