我有三个类,我在其中创建 JPanel 对象,即 MyObject 扩展 JPanel。我在主方法调用中调用所有三个面板。
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 上的方法来更改文本区域的文本?
感谢所有的建议家伙!我将继续接受第一个答案。它解决了我的问题。
更新 其中一个面板是我程序中另外两个面板的组合,这阻碍了我将对象实例传递给某个类的能力。通过删除该面板类并仅在 main 中创建一个 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();
然后在 mo2 类中:
private MyObject1 object1;
// constructor for mo2 Class
public MyObject2(MyObject1 object1){
this.object1 = object1; // to get the instance of object1
....// other constructor pieces
}
再次感谢大家!