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

时间:2014-02-26 15:25:56

标签: java swing actionlistener

我有两个类,我正在使用ActionListeners,事情是我想从第二个类中接收First类中的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();
    }
}

你能帮我们做这件事,非常感谢!

3 个答案:

答案 0 :(得分:1)

从您的代码中我认为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();

答案 1 :(得分:0)

Object getSource()类中有ActionEvent方法,因此在ActionListener中,您可以获取源并将其强制转换为PanelCotizacion。其他可能性是将BusquedaCotizacionGUI的引用添加到PanelCotizacion的构造函数中。

答案 2 :(得分:0)

在你的第二个JFrame(BusquedaCotizacionGUI)中添加这行代码(sth ike this):

 PanelCotizacion.setParam(int parameterToPass)

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

 public void setParam (int param) {
 this.myField = param;
}

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