You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Swing中如何实现两个JFrame之间的数据传递

可直接运行的实现代码
package eventdriven;

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

public class EventDriven extends JFrame {
    
    JPanel items = new JPanel();
    
    JLabel fName = new JLabel("First Name: ");
    JLabel lName = new JLabel("Last Name: ");
    JLabel mName = new JLabel("Middle Name: ");
    JLabel mNum = new JLabel("Mobile Number: ");
    JLabel eAdd = new JLabel("Email Address: ");
    
    JTextField fname = new JTextField(15);
    JTextField lname = new JTextField(15);
    JTextField mname = new JTextField(15);
    JTextField mnum = new JTextField(15);
    JTextField eadd = new JTextField(15);

    JButton submit = new JButton("Submit");
    JButton clear = new JButton("Clear All");
    
    JFrame output;
    
    public EventDriven()
    {
        this.setTitle("INPUT");
        this.setResizable(false);
        this.setSize(230, 300);
        this.setLocation(300, 300);
        this.setLayout(new FlowLayout(FlowLayout.CENTER));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        this.add(fName);
        this.add(fname);
        this.add(lName);
        this.add(lname);
        this.add(mName);
        this.add(mname);
        this.add(mNum);
        this.add(mnum);
        this.add(eAdd);
        this.add(eadd);
       
        submit.addActionListener(new btnSubmit());
        this.add(submit);
        clear.addActionListener(new btnClearAll());
        this.add(clear);
        
        this.add(items);
        this.setVisible(true);
    }
    
    class btnSubmit implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) 
        {
            if(e.getSource() == submit)
            {
                submit.setEnabled(false);
                // 初始化输出窗体
                output = new JFrame("OUTPUT");
                output.setSize(300,280);
                output.setLayout(new FlowLayout(FlowLayout.CENTER));
                output.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                
                // 读取输入内容并格式化
                String fullName = lname.getText().trim() + mname.getText().trim() + fname.getText().trim();
                String mobile = mnum.getText().trim();
                String email = eadd.getText().trim();
                StringBuilder infoSb = new StringBuilder();
                infoSb.append("姓名:").append(fullName).append("\n")
                        .append("手机号:").append(mobile).append("\n")
                        .append("邮箱:").append(email);
                
                // 创建文本区域展示内容,设置不可编辑
                JTextArea infos = new JTextArea(10, 20);
                infos.setText(infoSb.toString());
                infos.setEditable(false);
                output.add(infos);
                
                // 添加确认按钮
                JButton okay = new JButton("Okay");
                okay.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        // 清空输入框、重置提交按钮状态、关闭输出窗体
                        fname.setText(null);
                        lname.setText(null);
                        mname.setText(null);
                        mnum.setText(null);
                        eadd.setText(null);
                        submit.setEnabled(true);
                        output.dispose();
                    }
                });
                output.add(okay);
                
                output.setVisible(true);
            }   
        }
    }
    
    class btnClearAll implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) 
        {
            if(e.getSource() == clear)
            {
                fname.setText(null);
                lname.setText(null);
                mname.setText(null);
                mnum.setText(null);
                eadd.setText(null);
                submit.setEnabled(true);
                // 判空避免空指针
                if(output != null) {
                    output.dispose();
                }
            }
        }   
    }
    
    public static void main(String[] args) 
    {   
        EventDriven window = new EventDriven();  
    }  
}
核心调整说明
  • 将原本的全局okay按钮改为在提交时动态创建,避免Swing组件只能挂载到单个容器的异常
  • 新增输入内容读取、格式化拼接逻辑,按需求展示为姓名:xxx的格式
  • 给输出窗体添加了不可编辑的文本区域用于展示用户输入内容
  • 修复了过时方法调用、空指针风险等问题
  • 调整了输出窗体的关闭逻辑,避免关闭输出窗体时连带退出整个程序

内容的提问来源于stack exchange,提问作者zone007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:54:08