我有三个类,其中我创建对象是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