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

Java GUI:如何将actionPerformed内的值传递给外部tableFill方法?

解决方案

你可以直接在buttOK的actionPerformed方法内部调用TableR.tabFill(),Java 8及以后允许内部类访问外部方法的有效final局部变量(初始化后未被重新赋值的变量),你的TableR、jtPbm、Years都满足这个条件,因此可以直接使用。

具体修改步骤

在数据库查询成功的提示代码后,添加调用tableFill的代码,传入已获取的pbmGot和yearGOt:

if (x == true) {
    JOptionPane.showMessageDialog(Principal, "¡La consulta fue exitosa!", "Aviso", JOptionPane.INFORMATION_MESSAGE);
    // 传递值给tableFill方法
    TableR.tabFill(pbmGot, yearGOt);
}

修改后的完整actionPerformed代码片段

buttOK.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        String pbmGot = jtPbm.getText();
        String yearGOt = Years.getSelectedItem().toString();

        if (pbmGot.equals("") || yearGOt.equals("")) {
            JOptionPane.showMessageDialog(Principal, "¡Información incompleta!", "Error", JOptionPane.ERROR_MESSAGE);
        } else {
            try {
                int pbmValue = Integer.parseInt(pbmGot);
                if (pbmValue > 100 || pbmValue <= 0) {
                    JOptionPane.showMessageDialog(Principal, "¡Información errónea!", "Error", JOptionPane.ERROR_MESSAGE);
                } else {
                    DBConnect sql = new DBConnect(pbmGot, yearGOt);
                    ArrayList<Object> s = sql.ConnectDB();
                    boolean x = (boolean) s.get(0);
                    if (x) {
                        JOptionPane.showMessageDialog(Principal, "¡La consulta fue exitosa!", "Aviso", JOptionPane.INFORMATION_MESSAGE);
                        // 调用tableFill并传递参数
                        TableR.tabFill(pbmGot, yearGOt);
                    }
                }
            } catch (NumberFormatException ex) {
                // 补充异常处理,防止用户绕过focusListener输入无效值
                JOptionPane.showMessageDialog(Principal, "¡Ingresa un PBM válido!", "Error", JOptionPane.ERROR_MESSAGE);
                jtPbm.setText("");
            }
        }
    }
});

补充说明

  • 额外添加了try-catch包裹Integer.parseInt,避免用户在失去焦点后再次修改为无效值并点击按钮的情况。
  • 如果后续需要在更多类内方法中访问jtPbm、Years或TableR,可以将这些变量提升为GUI类的成员变量(放在init方法外部),这样整个类的方法都能直接访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:37:34