两个frame之间通信

该博客展示了Java代码实现两个窗口Frame1和Frame2文本互读功能。代码中使用了Java的Swing库创建窗口、按钮、文本框等组件,通过事件监听处理按钮点击事件,实现了Frame1读取Frame2文本,Frame2读取Frame1文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package Comm;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

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.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值