java中jframe子亲窗口向父窗口传值

java中swing编程想实现一个功能,父窗口打开一个子窗口,子窗口输完值后能把值返回给父窗口,思路是吧父窗口当作参数传给子窗口,子窗口提交事件发生之后改变父窗口的值

做了一个小例子

父窗口代码

import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class parentFrm {
	private JFrame parFrm;
	private JButton jbt_add;
	private JTextArea jta_viem;
	
	public JFrame getParFrm() {
		return parFrm;
	}
	public void setParFrm(JFrame parFrm) {
		this.parFrm = parFrm;
	}
	public JTextArea getJta_viem() {
		return jta_viem;
	}
	public void setJta_viem(JTextArea jta_viem) {
		this.jta_viem = jta_viem;
	}
	public static void main(String[] args) {
		new parentFrm();
	}
	public void openson(){
		childFrm mySon=new childFrm(this);//把父窗口当子窗口参数
		mySon.open();
	}
	
	public parentFrm() {
		parFrm = new JFrame();
		jbt_add = new JButton("添加");
		jta_viem = new JTextArea("请添加");
		
		parFrm.setLayout(new BorderLayout());
		parFrm.add(jta_viem, "Center");
		parFrm.add(jbt_add, "South");
		parFrm.setSize(400, 300);
		int screen_width = Toolkit.getDefaultToolkit().getScreenSize().width;
		int screen_height = Toolkit.getDefaultToolkit().getScreenSize().height;
		parFrm.setLocation((screen_width - parFrm.getWidth()) / 2, (screen_height - jbt_add.getHeight()) / 2);
		parFrm.setVisible(true);
		
		jbt_add.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				openson();//打开子窗口
				parFrm.dispose();//隐藏父窗口
			}
		});
	}
}
子窗口

import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class childFrm {
	private parentFrm parentFrm;
	String name;
	private JFrame chFrm;
	private JTextField jtf_name;
	private JButton jbt_submit;
	public static void main(String[] args) {
		new parentFrm();
	}
	

	public childFrm(){}
	
	public childFrm(parentFrm parentFrm){
		this.parentFrm = parentFrm;
	}
	public void init(){
		chFrm = new JFrame();
		jtf_name = new JTextField("请输入姓名");
		jbt_submit = new JButton("提交");
		
		chFrm.add(jtf_name, "Center");
		chFrm.add(jbt_submit, "South");
		chFrm.setSize(400, 300);
		int screen_width = Toolkit.getDefaultToolkit().getScreenSize().width;
		int screen_height = Toolkit.getDefaultToolkit().getScreenSize().height;
		chFrm.setLocation((screen_width - chFrm.getWidth()) / 2, (screen_height - chFrm.getHeight()) / 2);
		chFrm.setVisible(true);
		
		jbt_submit.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				name = jtf_name.getText();
				JOptionPane.showMessageDialog(chFrm, jtf_name.getText());
				parentFrm.getJta_viem().setText(name);
				chFrm.dispose();
				parentFrm.getParFrm().setVisible(true);
			}
		});
	}
	public void open(){
		init();
	}
}


  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值