2014-02-26 38 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

相關問題