输入JFrame组件显示正常,输出JFrame(OutFrame)组件无法显示求解决
问题分析与修复方案
你的OutFrame组件不显示的核心原因有两个:
outFrame()方法从未被调用:这个方法负责初始化OutFrame的面板和组件,但代码里没有任何地方执行它,导致OutFrame始终处于空白状态。- 结果标签未添加到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
相关产品推荐
相关产品推荐

