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();
}
}