Java中如何从已有JButton的事件方法中获取生成的String变量值
解决方案
你遇到的问题本质是方法内部定义的局部变量作用域仅局限于当前方法,无法在其他方法中直接访问,通过「将需要跨方法共享的变量声明为当前窗口类的成员变量」即可解决,具体操作如下:
- 在两个按钮事件方法所属的Swing窗口类中,声明对应类型的成员变量,注意要写在类内部、所有方法的外部:
// 共享的验证码变量,后续多个按钮都可以读写 private String sharedVerificationCode = ""; // 如果还有其他需要跨按钮共享的变量,可在此处依次声明 // private String otherSharedValue1 = ""; // private Integer otherSharedValue2 = 0;
- 修改第一个按钮的事件方法,将生成的随机字符串赋值给上述成员变量:
private void jButton_1ActionPerformed(java.awt.event.ActionEvent evt) { sharedVerificationCode = RandomStringUtils.randomAlphanumeric(12); System.out.println(sharedVerificationCode); JOptionPane.showMessageDialog(null, sharedVerificationCode); }
- 修改第二个按钮的事件方法,直接读取成员变量即可获取生成的验证码:
private void jButton_2ActionPerformed(java.awt.event.ActionEvent evt) { String code = txt_code.getText().trim(); String text = sharedVerificationCode; // 直接读取共享的成员变量 if (code.equals("")) { jLabel_codeerror.setText("This information is required."); } else { if (code.equals(text)) { jLabel_codeerror.setText("Equal code."); } else { jLabel_codeerror.setText("The confirmation has failed, please try again."); } } }
扩展说明
后续如果需要汇总多个按钮的变量到最后一个按钮处理,只需要把所有需要共享的变量都声明为类的成员变量,各个按钮的事件方法中读写对应的成员变量,最后一个按钮的事件方法直接读取所有成员变量做逻辑处理即可。
注意:可以根据业务需求加校验逻辑,比如用户未点击第一个按钮生成验证码就点击第二个按钮时,先判断sharedVerificationCode是否为空,提示用户先完成前序操作。
内容的提问来源于stack exchange,提问作者wicked
相关产品推荐
相关产品推荐

