2014-02-26 37 views
0

我有两个类另一个JFrame的,我现在用的ActionListeners,事情是,我想从第二个... THE FIRST CLASS接收第一类中的int值这是一个:传递int值从一个JFrame中使用的ActionListener

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(); 
    } 
} 

你能帮我家伙要做到这一点,非常感谢!

回答

0

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

1

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

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

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

public PanelCotizacion(int numCotizacion) { 
    initComponents(); 
    this.numCotizacion = numCotizacion; 
} 

,或者你可以通过JFrame作为父组件JPanel的构造函数,然后得到通过创建一个获得方法,如价值,

private JFrame parent; 
public PanelCotizacion(JFrame parent) { 
    initComponents(); 
    this.parent= parent; 
} 

然后得到这样的价值:

parent.getNumCotizacion(); 
+0

感谢Salah您的评论,构造函数采取一个int参数不起作用,第二个选项我不知道把它放到我的代码“parent.getNumCotizacion();”导致它产生我的错误,我忘了也提到,我使用的面板我已经改变了很多时间与其他面板,使用removeAll(); .add(component),.updateUI();所以我不知道这是否会影响为什么我不能看到变量numCotizacion的更新,我要尝试Kojotak – Mario

0

在第二的JFrame(BusquedaCotizacionGUI)添加这行代码(某物IKE此):

PanelCotizacion.setParam(int parameterToPass) 

并且在第一的JFrame(PanelCotizacion)添加的方法(比如setParam)和一个整数字段(比方说MyField的):

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

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

+0

的答案感谢您的答案莫克,但它不起作用,我在PanelCotizacion中出现错误,另一种方式来传递价值? – Mario

+0

不用客气,你是怎么称呼setParam的,请给出关于错误的更多细节。 – mok

+0

“非静态变量,这不能从静态上下文中引用”,再次感谢您的帮助! – Mario

相关问题