天天看点

两个frame之间通信

package Comm;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Frame1 extends JFrame {

  JTextArea jTextArea1 = new JTextArea();

  JButton jButton1 = new JButton();

  JLabel jLabel1 = new JLabel();

  JButton jButton2 = new JButton();

  Frame2 child;

  public Frame1() {

    try {

      jbInit();

    }

    catch(Exception e) {

      e.printStackTrace();

    }

  }

  public static void main(String[] args) {

    Frame1 frame1 = new Frame1();

    frame1.setVisible(true);

    frame1.show();

  }

  private void jbInit() throws Exception {

    jTextArea1.setText("jTextArea1");

    jButton1.setText("Make Frame 2");

    jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));

    jLabel1.setText("Frame 1");

    jButton2.setText("jButton2");

    jButton2.addActionListener(new Frame1_jButton2_actionAdapter(this));

    this.getContentPane().add(jTextArea1, BorderLayout.CENTER);

    this.getContentPane().add(jButton1, BorderLayout.WEST);

    this.getContentPane().add(jLabel1, BorderLayout.NORTH);

    this.getContentPane().add(jButton2, BorderLayout.SOUTH);

  }

  void jButton1_actionPerformed(ActionEvent e) {

    child=new Frame2(this);

    child.setVisible(true);

    child.show();

  }

  void jButton2_actionPerformed(ActionEvent e) {

    this.jTextArea1.setText(child.jTextField1.getText());

  }

}

class Frame1_jButton1_actionAdapter implements java.awt.event.ActionListener {

  Frame1 adaptee;

  Frame1_jButton1_actionAdapter(Frame1 adaptee) {

    this.adaptee = adaptee;

  }

  public void actionPerformed(ActionEvent e) {

    adaptee.jButton1_actionPerformed(e);

  }

}

class Frame1_jButton2_actionAdapter implements java.awt.event.ActionListener {

  Frame1 adaptee;

  Frame1_jButton2_actionAdapter(Frame1 adaptee) {

    this.adaptee = adaptee;

  }

  public void actionPerformed(ActionEvent e) {

    adaptee.jButton2_actionPerformed(e);

  }

}

------------------------------------------------------------------------------------------------------------

package Comm;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Frame2 extends JFrame {

  JLabel jLabel1 = new JLabel();

  JTextField jTextField1 = new JTextField();

  JButton jButton1 = new JButton();

  Frame1 parent;

  public Frame2(Frame1 Parent) {

    parent =Parent;

    try {

      jbInit();

    }

    catch(Exception e) {

      e.printStackTrace();

    }

  }

  private void jbInit() throws Exception {

    jLabel1.setText("Frame 2");

    jTextField1.setText("jTextField1");

    jButton1.setText("Get Frame1 Text");

    jButton1.addActionListener(new Frame2_jButton1_actionAdapter(this));

    this.getContentPane().add(jLabel1, BorderLayout.NORTH);

    this.getContentPane().add(jTextField1, BorderLayout.CENTER);

    this.getContentPane().add(jButton1, BorderLayout.SOUTH);

  }

  void jButton1_actionPerformed(ActionEvent e) {

    this.jTextField1.setText(parent.jTextArea1.getText() );

  }

}

class Frame2_jButton1_actionAdapter implements java.awt.event.ActionListener {

  Frame2 adaptee;

  Frame2_jButton1_actionAdapter(Frame2 adaptee) {

    this.adaptee = adaptee;

  }

  public void actionPerformed(ActionEvent e) {

    adaptee.jButton1_actionPerformed(e);

  }

}

------------------------------------------------------------------------------------------------------------

运行以上的frame1 。 frame1 可以读取frame2的text, frame2也可以读取frame1的text