Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ActionListener将int值从一个jFrame传递到另一个jFrame_Java_Swing_Actionlistener - Fatal编程技术网

Java 使用ActionListener将int值从一个jFrame传递到另一个jFrame

Java 使用ActionListener将int值从一个jFrame传递到另一个jFrame,java,swing,actionlistener,Java,Swing,Actionlistener,我有两个类,我使用ActionListeners,问题是我想在第一个类中从第二个类接收一个int值。。。 第一节课是这样的: public class PanelCotizacion extends javax.swing.JPanel implements ActionListener { private int numCotizacion = 0; public PanelCotizacion() { initComponents(); } p

我有两个类,我使用ActionListeners,问题是我想在第一个类中从第二个类接收一个int值。。。 第一节课是这样的:

public class PanelCotizacion extends javax.swing.JPanel implements ActionListener {
    private int numCotizacion = 0;
    public PanelCotizacion() {
        initComponents();
    }
    public void actionPerformed(ActionEvent e) {
        System.out.println("HERE IS WHERE I WANT TO RECEIVE THE VALUE");
        this numCotizacion = "";
        //THE VALUE THAT I WANT TO RECEIVE FROM THE OTHER jFRAME
        //TRIGGERED BY THE EVENT OF THE BUTTON (action performed)
    }
}
这是第二个,我想在这里发送int值:

public class BusquedaCotizacionGUI extends javax.swing.JFrame {
    private int numCotizacion = 0;
    public BusquedaCotizacionGUI() {
        initComponents();
        this.setLocationRelativeTo(null);
        PanelCotizacion pC = new PanelCotizacion();
        this.cmdOK.addActionListener(pC);
    }
    private void cmdOKActionPerformed(java.awt.event.ActionEvent evt) { 
        this.numCotizacion = Integer.parseInt(this.txtNumCotizacion.getText());
        //Here is where I WANT TO PASS THE VARIABLE "numCotizacion" tho the other class
        //Can Somebody Help Me
        this.dispose();
    }
}

你们能帮我吗,非常感谢

ActionEvent
类中有
Object getSource()
方法,因此在ActionListener中,您可以获取源代码并将其强制转换到
panelcotizaion
。另一种可能是在
panelcotizaciongui
的构造函数中添加对
BusquedaCotizacionGUI
的引用。

从您的代码中,我认为
BusquedaCotizacionGUI JFrame
负责打开
PanelCotizacion Jpanel
并传递变量

因此,有很多方法可以将变量从
JFrame
传递到
JPanel

可以使用int参数创建构造函数,然后在构造函数中传递变量,如:

public PanelCotizacion(int numCotizacion) {
    initComponents();
    this.numCotizacion = numCotizacion;
}
或者您可以将
JFrame
作为父组件传递给
JPanel
构造函数,然后通过创建一个get方法获取值,如

private JFrame parent;
public PanelCotizacion(JFrame parent) {
    initComponents();
    this.parent= parent;
}
然后得到如下值:

parent.getNumCotizacion();
在第二个JFrame(BusquedaCotizacionGUI)中添加以下代码行(类似于此):

在第一个JFrame(PanelCotizacion)中添加一个方法(比如setParam)和一个整数字段(比如myField):


您应该决定如何实现这个想法(静态方法与创建第一个JFrame的实例,…);这只是一般的想法,定制它以满足您的需求。

感谢Salah的评论,使用int参数的构造函数不起作用,第二个选项我不知道在我的代码“parent.getNumCotizacion();”中放在哪里,因为它会生成错误,我也忘了提及我使用的面板,我已经使用removeAll()多次与其他面板一起更改它。添加(组件),.updateUI();所以我不知道这是否会影响我为什么看不到变量numCotizacion的更新,我将尝试Kojotak的答案谢谢你的答案mok,但它不起作用,我在PanelCotizacion中遇到了一个错误,另一种传递值的方法?不客气,你是如何调用setParam的,请提供有关错误的更多详细信息。“非静态变量无法从静态上下文引用此变量“,再次感谢您的帮助!哦,真是个错误!你说得对。对不起:)我现在就修。只需使用new创建另一个JFrame的示例,并使用创建的对象调用setParam,只需将myField设置为静态。我如何才能做到这一点?这是我的代码:public static void setParam(int parseInt){throw new UnsupportedOperationException(“还不受支持”);//要更改生成的方法体,请选择Tools | Templates.this.numCotizacion=parseInt;},我的变量是:public static int numCotizacion=0;但我有同样的警告!
 PanelCotizacion.setParam(int parameterToPass)
 public void setParam (int param) {
 this.myField = param;
}