能否将两个不同JFrame关联至单个类?NetBeans下OO实现问题
问题排查与解决步骤
核心问题定位
你代码里output.lbNim.setText(kls.getNim())没生效,但直接调用tKode.getText()能成功,说明问题出在子类kls的Nim数据未被正确存入,或是kls对象的生命周期有问题。
第一步:补全数据存入逻辑
当前代码里缺少将输入框的Nim值存入kls的操作,必须先存再取:
private void bCetakActionPerformed(java.awt.event.ActionEvent evt) { // 先把输入的Nim存入kls对象(假设tNim是输入Nim的文本框) kls.setNim(tNim.getText()); // 再从kls中读取数据赋值给第二个窗体 output.lbNim.setText(kls.getNim()); output.lbKode.setText(tKode.getText()); output.lbJudul.setText(tJudul.getText()); output.lbPinjam.setText(tTgl.getText()); this.setVisible(false); output.show(); }
第二步:确认kls对象的实例化方式
如果已经存了数据还是拿不到,检查kls是否被重复实例化:
- 禁止在按钮事件里新建
kls对象(比如kls = new 子类A()),否则每次点击都会重置数据。 - 正确做法是把
kls作为窗体类的成员变量,在窗体初始化时仅实例化一次:
// 把kls定义为类的成员变量 private 子类A kls; // 在窗体构造方法中初始化 public 第一个窗体类() { initComponents(); kls = new 子类A(); // 仅实例化一次,保留数据状态 }
第三步:检查子类A的getNim()方法正确性
确保子类A的getNim()能正确返回存入的数值,示例代码如下:
class 子类A { private String nim; // 赋值方法 public void setNim(String nim) { this.nim = nim; } // 取值方法 public String getNim() { return nim; // 必须返回成员变量nim,不能返回空值或固定字符串 } }
内容的提问来源于stack exchange,提问作者Mile
相关产品推荐
相关产品推荐

