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

输入JFrame组件显示正常,输出JFrame(OutFrame)组件无法显示求解决

问题分析与修复方案

你的OutFrame组件不显示的核心原因有两个:

  1. outFrame()方法从未被调用:这个方法负责初始化OutFrame的面板和组件,但代码里没有任何地方执行它,导致OutFrame始终处于空白状态。
  2. 结果标签未添加到OutFrame:lb6到lb10这些用来展示输入内容的标签,没有被添加到panel2中,就算OutFrame完成初始化,也无法显示用户输入的信息。

具体修复步骤

1. 在Submit按钮的事件中调用outFrame()

点击Submit按钮时,先完成OutFrame的组件初始化,再设置窗口可见:

class btnSubmit implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
        outFrame(); // 先初始化OutFrame的组件
        OutFrame.setVisible(true);
        String name1 = tf1.getText();
        String name2 = tf2.getText();
        String name3 = tf3.getText();
        String name4 = tf4.getText();
        String name5 = tf5.getText();
        lb6.setText("First Name: " + name1);
        lb7.setText("Last Name: " + name2);
        lb8.setText("Middle Name: " + name3);
        lb9.setText("Mobile Number: " + name4);
        lb10.setText("E-mail Address: " + name5);
        btnSub.setEnabled(false);
    }
}

2. 将结果标签添加到panel2

修改outFrame()方法,把展示输入内容的标签加入面板:

public void outFrame(){
    OutFrame.setSize(500,300);
    panel2.setLayout(new FlowLayout(FlowLayout.CENTER, 25, 10));          
    // 添加结果展示标签
    panel2.add(lb6);
    panel2.add(lb7);
    panel2.add(lb8);
    panel2.add(lb9);
    panel2.add(lb10);
    panel2.add(btnOk);
    OutFrame.add(panel2);
    // 用DISPOSE_ON_CLOSE,关闭OutFrame不会退出整个程序
    OutFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
    ActionListener okListen = new btnOkay();
    btnOk.addActionListener(okListen);
}

3. 冗余代码清理

  • 外部类继承了JFrame但未实际使用,建议改为普通类,避免混淆:
    public class EventDriven_Dineros { // 移除implements ActionListener
    
  • 外部类的actionPerformed方法从未被触发(按钮已绑定内部类监听器),可以直接删除,减少冗余。

修复后效果

点击Submit按钮后,OutFrame会正确初始化并显示所有输入信息,Okay和Clear All按钮可正常执行对应功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:20:32