我有三個類,其中我創建對象是JPanels即MyObject擴展JPanel。我在主要方法調用中調用所有三個面板。GUI之間的通信Java
MyObject1 mo1 = new MyObject1(); // contains a textfield and a button
MyObject2 mo2 = new MyObject2(); // contains a textarea holding a long paragraph
MyObject3 mo3 = new MyObject3();
如何讓mo1調用mo2上的方法來改變文本區域的文本?
感謝所有的建議傢伙!我要繼續並接受第一個答案。它解決了我的問題。
更新 其中一個面板是在我的程序的另一兩個面板,這是我的妨礙到一個物體的一個實例傳遞給某一類能力的組合。通過刪除該面板類,並在主要創建一個jpanel然後將兩個面板添加到新的jpanel我能夠將類的實例傳遞給每個構造函數。
所以反過來我的解決辦法是
JPanel panelHolder = new JPanel(); // create a panel in my main instead of a new class
MyObject2 mo2 = new MyObject2(); // contains a textarea holding a long paragrah
MyObject1 mo1 = new MyObject1(mo2); // contains a textfield and a button
panelHolder.add(mo1);
panelHolder.add(mo2);
MyObject3 mo3 = new MyObject3();
,然後在MO 2類:
private MyObject1 object1;
// constructor for mo2 Class
public MyObject2(MyObject1 object1){
this.object1 = object1; // to get the instance of object1
....// other constructor pieces
}
再次感謝你們!
你是如何處理這些事件的?我假設當你按下按鈕時,mo1有一個事件處理程序。 – 2013-05-13 19:01:26
是的,我爲該按鈕創建了一個ActionListener,將文本字段設置爲使用按鈕打開的文件的名稱。但我然後想給其他Jpanel整個文件內容。 – 2013-05-13 19:09:24