1。父界面DaQiZhiBiao 生成子界面LiShuDu ,在子界面LiShuDu要判断父界面DaQiZhiBiao 中哪个button被按下了,
2。当子界面LiShuDu被关闭后,还要有值返回给父界面DaQiZhiBiao,并在保存在父界面DaQiZhiBiao中,
3。再次 按下父界面DaQiZhiBiao 中button,又生成子界面LiShuDu,重复步骤2,又保存值在父界面DaQiZhiBiao中,但要保持上次步骤2保存的值还在。如何实现啊?  郁闷啊,弄了好久,总是出错啊。高手们帮帮忙吧!public class DaQiZhiBiao implements ActionListener {
JButton b4;
JTextField t7;
LiShuDu liShuDu;
public DaQiZhiBiao()
{

t7 = new JTextField();
liShuDu.daQiZhiBiao=this;//提示这里出现了问题 b4 = new JButton("隶属度");
b4.addActionListener(
            new ActionListener()
        {
          public void actionPerformed(ActionEvent e)
          {           
           liShuDu=new LiShuDu();
             flag=1;//设了一个标志位
            }
        }
     );
}
public class LiShuDu implements ActionListener {
DaQiZhiBiao daQiZhiBiao;
public LiShuDu()
{ JButton b1 = new JButton("确定");
b1.addActionListener(
            new ActionListener()
        {
          public void actionPerformed(ActionEvent e)
          {
                try{
if(daQiZhiBiao.flag==1)
             {
             daQiZhiBiao.t7.setText("t7");
             daQiZhiBiao.t7.setEditable(false);
             f.hide();
             }
}
}

解决方案 »

  1.   

    public DaQiZhiBiao()
    {

    t7 = new JTextField(); b4 = new JButton("隶属度");
    b4.addActionListener(
                new ActionListener()
            {
              public void actionPerformed(ActionEvent e)
              {           
               liShuDu=new LiShuDu();
               liShuDu.daQiZhiBiao=this;//改到这里,上面的话liShuDu还是null呢,当然不行了
                 flag=1;//设了一个标志位
                }
            }
         );
    }
    我没测,不过这么传值可不大好,看着挺乱的,可以用dialog之类的东西,也不用设什么标志为了就
      

  2.   

    zdsdiablo(十分钟年华老去) : 
    liShuDu=new LiShuDu();
    liShuDu.daQiZhiBiao=this;这行提示:type mismatch  :  cannot convert from <anonymous implementation of ActionListener> to DaQiZhiBiao  怎么办呢?
      

  3.   

    可能是我说的不太清楚吧,
    父界面中有3个button,当它们分别被按下时,调出同一个子界面。要在子界面判断是3个button中哪一个button被按下时,调出的子界面。
    还有是上面zdsdiablo(十分钟年华老去) :说的
    liShuDu=new LiShuDu();
    liShuDu.daQiZhiBiao=this;这行错误提示:type mismatch  :  cannot convert from <anonymous implementation of ActionListener> to DaQiZhiBiao  是怎么回事啊
      

  4.   

    楼主你的程序看起来有点乱
    public class DaQiZhiBiao implements ActionListener {
    JButton b4;
    JTextField t7;
    LiShuDu liShuDu;//这里都没创建一个对象,应该为LiShuDu liShuDu=new LiShuDu();
    public DaQiZhiBiao()
    {t7 = new JTextField();
    liShuDu.daQiZhiBiao=this;//提示这里出现了问题b4 = new JButton("隶属度");
    b4.addActionListener(
                new ActionListener()
            {
              public void actionPerformed(ActionEvent e)
              {          
              liShuDu=new LiShuDu();
               flag=1;//设了一个标志位
               }
            }
        );
    }
    你没把所有程序给出来,没得帮你调试下,楼主自己试下吧
      

  5.   

    所有的代码如下:帮我调试一下吧,我不会弄啊,好郁闷。
    import java.awt.Container;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.util.StringTokenizer;
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    public class DaQiZhiBiao implements ActionListener {
    JTextField t1;
    JTextField t2;
    JTextField t3;
    JTextField t4;
    JTextField t5;
    JTextField t6;
    JTextField t7;
    JTextField t8;
    JTextField t9;
    JButton b1;
    JButton b2;
    JButton b3;
    JButton b4;
    JButton b5;
    JButton b6;
    JFrame f;
    File fFeiQi;
    int flag;
    LiShuDu liShuDu ;
    public DaQiZhiBiao()
    {

    f = new JFrame("大气污染物指标的相=对重要度");
    Container contentpane = f.getContentPane();
    contentpane.setLayout(null); JLabel label1 = new JLabel("废气");
    JLabel label2 = new JLabel("颗粒物");
    JLabel label3 = new JLabel("放射性物质");
    JLabel label4 = new JLabel("废气");
    JLabel label5 = new JLabel("颗粒物");
    JLabel label6 = new JLabel("放射性物质");
    JLabel label7 = new JLabel("废气");
    JLabel label8 = new JLabel("颗粒物");
    JLabel label9 = new JLabel("放射性物质");

    label1.setBounds(15,50,100,20);
    label2.setBounds(15,80,100,20);
    label3.setBounds(15,110,100,20);
    label4.setBounds(110,25,100,20);
    label5.setBounds(180,25,100,20);
    label6.setBounds(250,25,100,20);
    label7.setBounds(15,50,100,20);
    label8.setBounds(15,80,100,20);
    label9.setBounds(15,110,100,20);

    label1.setFont(new Font("宋体",Font.PLAIN,13));
    label2.setFont(new Font("宋体",Font.PLAIN,13));
    label3.setFont(new Font("宋体",Font.PLAIN,13));
    label4.setFont(new Font("宋体",Font.PLAIN,13));
    label5.setFont(new Font("宋体",Font.PLAIN,13));
    label6.setFont(new Font("宋体",Font.PLAIN,13));
    label7.setFont(new Font("宋体",Font.PLAIN,13));
    label8.setFont(new Font("宋体",Font.PLAIN,13));
    label9.setFont(new Font("宋体",Font.PLAIN,13)); t1 = new JTextField();
    t2 = new JTextField();
    t3 = new JTextField();
    t4 = new JTextField();
    t5 = new JTextField();
    t6 = new JTextField();
    t7 = new JTextField();
    t8 = new JTextField();
    t9 = new JTextField();

    t1.setBounds(110,50,50,20);
    t2.setBounds(180,50,50,20);
    t3.setBounds(250,50,50,20);
    t4.setBounds(180,80,50,20);
    t5.setBounds(250,80,50,20);
    t6.setBounds(250,110,50,20);
    t7.setBounds(110,50,50,20);
    t8.setBounds(110,80,50,20);
    t9.setBounds(110,110,50,20);

    JPanel p1 = new JPanel();
    JPanel p2 = new JPanel();
    JPanel p3 = new JPanel();
    JPanel p4 = new JPanel();

    p1.setBounds(15,15,620,180);
    p1.setLayout(null);
    p2.setBounds(15,220,400,50);

    p3.setBorder(BorderFactory.createTitledBorder("大气污染物指标相对重要度"));
    p3.setBounds(15,15,330,150);
    p3.setLayout(null);
    p3.add(label1);
    p3.add(label2);
    p3.add(label3);
    p3.add(label4);
    p3.add(label5);
    p3.add(label6);
    p3.add(t1);
    p3.add(t2);
    p3.add(t3);
    p3.add(t4);
    p3.add(t5);
    p3.add(t6);


    b4 = new JButton("隶属度");
    b4.addActionListener(
                new ActionListener()
            {
              public void actionPerformed(ActionEvent e)
              {           
               f.hide();
               liShuDu=new LiShuDu();
               fFeiQi = new File("FeiQi.txt");
    //          liShuDu.daQiZhiBiao=this;
                 flag=1;
                }
            }
        );


    b4.setFont(new Font("宋体",Font.PLAIN,13));
    b4.setBounds(170,50,80,20);

    b5 = new JButton("隶属度");
    b5.addActionListener(
                new ActionListener()
            {
              public void actionPerformed(ActionEvent e)
              {f.hide();
              
               liShuDu=new LiShuDu();
              
               flag=2;
              }
            }
        );
    b5.setFont(new Font("宋体",Font.PLAIN,13));
    b5.setBounds(170,80,80,20);

    b6 = new JButton("隶属度");
    b6.addActionListener(
                new ActionListener()
            {
              public void actionPerformed(ActionEvent e)
              {f.hide();
               liShuDu=new LiShuDu();
              
               //liShuDu.daQiZhiBiao=this;
              }
            }
        );
    b6.setFont(new Font("宋体",Font.PLAIN,13));
    b6.setBounds(170,110,80,20);

    p4.setBorder(BorderFactory.createTitledBorder("隶属度"));
    p4.setBounds(350,15,270,150);
    p4.setLayout(null);
    p4.add(label7);
    p4.add(label8);
    p4.add(label9);
    p4.add(t7);
    p4.add(t8);
    p4.add(t9);
    p4.add(b4);
    p4.add(b5);
    p4.add(b6);

    p1.add(p3);
    p1.add(p4);

    b1 = new JButton("确定");
    b1.addActionListener(this);
    b2 = new JButton("取消");
    b3 = new JButton("帮助");
    b1.setFont(new Font("宋体",Font.PLAIN,13));
    b2.setFont(new Font("宋体",Font.PLAIN,13));
    b3.setFont(new Font("宋体",Font.PLAIN,13));
    p2.add(b1);
    p2.add(b2);
    p2.add(b3);

        contentpane.add(p1);
        contentpane.add(p2);    
        
    f.setSize(700,300);
    f.show();
    f.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });
    }
      

  6.   

    还有
    public void actionPerformed(ActionEvent e) 
        {
    if(e.getSource()==b1)
        { 
    File f = new File("DaQiZhiBiao.txt");

    int b;
    byte buffer[]=new byte[2500];
    String s[]=new String[70];
    try
    {
    FileOutputStream out = new FileOutputStream(f);
    out.write((t1.getText()+" "+t2.getText()+" "+t3.getText()+"\n").getBytes());
    out.write((t4.getText()+" "+t5.getText()+"\n").getBytes());
    out.write((t6.getText()+"\n").getBytes());
    out.close();

    int i=0,j,k;
    String s1;
    double A[][]=new double[20][20];
    double M[]=new double[30],W[]=new double[30],WW[]=new double[30];
    FileInputStream readfile1 = new FileInputStream(f);
    b=readfile1.read(buffer,0,2500);
    try{String  str=new String(buffer,0,b,"Default");
    StringTokenizer  tokenizer=new StringTokenizer(str," '\n'");
    while(tokenizer.hasMoreTokens())
    {s[i]=tokenizer.nextToken();
    i++;
    }
    //把值附给矩阵
    i=0;
    for( j=0;j<3;j++)
    {   
    for( k=j;k<3;k++)
    {A[j][k]=Double.valueOf(s[i].toString()).doubleValue();
    i++;
    //System.out.println(A[j][k]);
    }
    }
    for(j=0;j<3;j++)
    {for( k=j;k<3;k++)
    {//System.out.println(A[j][k]);
    A[k][j]=1/A[j][k];
    //System.out.println(A[k][j]);
    }
    }
    //每行矩阵乘积
     for(j=0;j<3;j++)
             {
      M[j]=1;
      for(k=0;k<3;k++)
      {
      //System.out.println(A[j][k]);
      M[j]=M[j]*A[j][k];
      }
      //System.out.println(M[j]);
             }
     //每层权重
     W[0]=0;
     for(j=0;j<3;j++)
     {M[j]=Math.pow(M[j],1.0/3);
     //System.out.println(M[j]);
     W[0]=W[0]+M[j];
     }
     //System.out.println(W[0]);
     for(j=0;j<3;j++)
     {WW[j]=M[j]/W[0];
     s1=String.valueOf(WW[j]).toString();
     //System.out.println(s1);
     }
    }
    catch(UnsupportedEncodingException ee)
    {System.out.println("UnsupportedEncodingException");}
    //输出权重值形成文本文件
    File f1 = new File("DaQiZhiBiaoQuanZhong.txt");
    FileOutputStream out1 = new FileOutputStream(f1);
    for(j=0;j<3;j++)
     {
    out1.write((String.valueOf(WW[j]).toString()+"\n").getBytes());
     }
    out1.close();

    //组合权重
    int b1,d;
    byte buffer1[]=new byte[2500];
    FileInputStream readfile2 = new FileInputStream(f1);
    b1=readfile2.read(buffer1,0,2500);
    d=0;
    String t[]=new String[70];
    try{String  str1=new String(buffer1,0,b1,"Default");
    StringTokenizer  tokenizer1=new StringTokenizer(str1,"'\n'");
    while(tokenizer1.hasMoreTokens())
    {
    t[d]=tokenizer1.nextToken();
    d++;
    }
    System.out.println(t[0]);
    System.out.println(t[1]);
    System.out.println(t[2]);
    }
    catch(UnsupportedEncodingException ee)
    {System.out.println("UnsupportedEncodingException");}
    }
    catch(IOException ex){ System.out.println("youwenti");}
        }
        }
    /**
     * @param args
     */
    public static void main(String[] args) 
    {
    try{
    new DaQiZhiBiao();
    }
    catch (Exception ee){
    System.out.print("errorhere");
    }
    // TODO 自动生成方法存根
          
    }}
      

  7.   

    另一个类
    import java.awt.Container;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.sql.SQLException;import javax.swing.BorderFactory;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.JRadioButton;
    public class LiShuDu implements ActionListener {
    JTextField t1;
    JTextField t2;
    JTextField t3;
    JTextField t4;
    JFrame f;
    int ffllag;
    DaQiZhiBiao daQiZhiBiao;
    String s1,subs1;
    public LiShuDu()
    {
    f = new JFrame("隶属度");
    Container parent=f.getParent();

    Container contentpane = f.getContentPane();
    contentpane.setLayout(null);

    JLabel label1 = new JLabel();
    JLabel label2 = new JLabel("实测值m");
    JLabel label3 = new JLabel("界限值a");
    JLabel label4 = new JLabel("界限值b");

    label1.setText("选择隶属函数种类,输入界限值a、b及实测值m");

    label1.setBounds(15,10,480,20);
    label2.setBounds(30,30,100,20);
    label3.setBounds(30,50,100,20);
    label4.setBounds(30,70,100,20);

    label1.setFont(new Font("宋体",Font.PLAIN,13));
    label2.setFont(new Font("宋体",Font.PLAIN,13));
    label3.setFont(new Font("宋体",Font.PLAIN,13));
    label4.setFont(new Font("宋体",Font.PLAIN,13));

    t1 = new JTextField();
    t2 = new JTextField();
    t3 = new JTextField();
    t4 = new JTextField();

    t1.setBounds(120,30,50,20);
    t2.setBounds(120,50,50,20);
    t3.setBounds(120,70,50,20);
    t4.setBounds(120,90,50,20);

    JRadioButton r1=new JRadioButton("降半岭形分布");
    JRadioButton r2=new JRadioButton("升半岭形分布");
    r1.setBounds(20,30,150,20);
    r2.setBounds(220,30,150,20);
    JLabel label5 = new JLabel(new ImageIcon(".\\test.jpg"));
    label5.setHorizontalAlignment(JLabel.CENTER);
    label5.setBounds(20,60,130,100);
    JLabel label6 = new JLabel(new ImageIcon(".\\test1.jpg"));
    label6.setHorizontalAlignment(JLabel.CENTER);
    label6.setBounds(220,60,130,100);

    JPanel p1 = new JPanel();
    JPanel p2 = new JPanel();
    JPanel p3 = new JPanel();

    p1.setBorder(BorderFactory.createTitledBorder("隶属函数种类"));
    p1.setBounds(15,130,400,180);
    p1.setLayout(null);
    p1.add(r1);
    p1.add(r2);
    p1.add(label5);
    p1.add(label6);

    p2.setBounds(15,320,400,100);
    p2.setLayout(null);
    p3.setBounds(15,430,400,100);

    p2.add(label2);
    p2.add(t1);
    p2.add(label3);
    p2.add(t2);
    p2.add(label4);
    p2.add(t3);
    p2.add(t4);

    JButton b1 = new JButton("确定");
    b1.addActionListener(
                new ActionListener()
            {
              public void actionPerformed(ActionEvent e)
              {
                    try{
                    
                     double  computerLSD=ComputerLSD();
                     s1=String.valueOf(computerLSD);
                 subs1=s1.substring(0,6);
                 t4.setText(subs1);
                 System.out.println(subs1);
                 daQiZhiBiao=new DaQiZhiBiao();
    //              if(daQiZhiBiao.flag==1)
                 {daQiZhiBiao.t7.setText(subs1);
                 daQiZhiBiao.t7.setEditable(false);
                 f.hide();}
    //              if(daQiZhiBiao.flag==2)
    //              {daQiZhiBiao.t8.setText(subs1);
    //             daQiZhiBiao.t8.setEditable(false);
    //             f.hide();
    //             }
    //             else if(daQiZhiBiao.flag==3)
    //             {daQiZhiBiao.t9.setText(subs1);
    //             daQiZhiBiao.t9.setEditable(false);
    //             f.hide();
    //             }
               }
                catch(SQLException le)
    {System.out.println("SQLException");}
                    }
              }
            );

    JButton b2 = new JButton("取消");
    JButton b3 = new JButton("帮助");
    b1.setFont(new Font("宋体",Font.PLAIN,13));
    b2.setFont(new Font("宋体",Font.PLAIN,13));
    b3.setFont(new Font("宋体",Font.PLAIN,13));
    p3.add(b1);
    p3.add(b2);
    p3.add(b3);

        contentpane.add(label1);
        contentpane.add(p1);
        contentpane.add(p2);  
        contentpane.add(p3);
        
    f.setSize(440,600);
    f.show();
    f.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });


    }
        public double ComputerLSD() throws SQLException
        { double m=Double.valueOf(t1.getText()).doubleValue(),
         a=Double.valueOf(t2.getText()).doubleValue(),
    b=Double.valueOf(t3.getText()).doubleValue(),
    zjresult,
    lastresult;
         zjresult=m-(a+b)/2;
         lastresult=0.5+0.5*Math.sin((3.1415926/(b-a))*zjresult);
         return lastresult;
         }
    public void actionPerformed(ActionEvent e) 
        {
         File f = new File("lishudu.txt");
         try
         {
         }
         catch(Exception ex){ System.out.println("youwenti");}
        }

    public static void main(String[] args) 
    {

    try{
    LiShuDu liShuDu=new LiShuDu();

    }
    catch (Exception ee){

    }
    // TODO 自动生成方法存根
          
    }}