Java 复合对象如何与父对象通信?
我来自C语言的系统编程背景,Java编程对我来说是希腊语和拉丁语 所以我的问题是:-我有2个Java 复合对象如何与父对象通信?,java,oop,message,composition,Java,Oop,Message,Composition,我来自C语言的系统编程背景,Java编程对我来说是希腊语和拉丁语 所以我的问题是:-我有2个JFrame对象 我有一个父对象a 它有子对象B 对象B上有按钮。 如果在B中单击按钮,我想更新父对象的UI 我如何才能与家长沟通-更新自己 当值正在调整且第二个GUI打开时,是否需要使更新处于“实时”状态,或者是否可以将更新延迟到关闭 它们可以推迟到关闭 使用模式对话框或作业窗格 使用模式对话框,在将代码行设置为可见后立即出现的任何代码行都将被阻止处理,直到关闭为止。在这里,您可以检查(选项
JFrame
对象
- 我有一个父对象a
- 它有子对象B
它们可以推迟到关闭 使用模式对话框或
作业窗格
它们可以推迟到关闭 使用模式对话框或
作业窗格
“把所有的东西都放在一节课上”不是一个好的设计,也不是我一般的建议。只是主GUI没有什么理由不引用影响/更新它的控件。通常,您有一个父JFrame对象,您可以在其中放置按钮、面板等小部件。 您只需使用按钮添加一个匿名操作侦听器,然后从其内部调用父类的任何函数
public class MyFrame extends JFrame{
private Button button 2 = new Button();
public void init(){
b = new Button("Click me");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//CALL ANY FUNCTION OF PARENT CLASS FROM HERE.
updateText();
}
});
}
updateText(){
this.button2.setText("new text");
}
}
你可以在这个页面上找到更多关于它的信息。通常,你有一个父JFrame对象,你可以将你的小部件如按钮、面板等放入其中。 您只需使用按钮添加一个匿名操作侦听器,然后从其内部调用父类的任何函数
public class MyFrame extends JFrame{
private Button button 2 = new Button();
public void init(){
b = new Button("Click me");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
//CALL ANY FUNCTION OF PARENT CLASS FROM HERE.
updateText();
}
});
}
updateText(){
this.button2.setText("new text");
}
}
您可以在本页上找到更多信息我找到了解决此问题的另一种方法 我想它可以解决一般的授权问题 父对象由子对象组成。 父对象将此值传递给构造函数中的子对象。 这样子对象就可以调用父对象上的方法并通知任何更改
在这种情况下,子帧调用父帧并要求父帧刷新自身。我找到了另一种解决此问题的方法 我想它可以解决一般的授权问题 父对象由子对象组成。 父对象将此值传递给构造函数中的子对象。 这样子对象就可以调用父对象上的方法并通知任何更改
在这种情况下,子帧调用父帧并要求父帧刷新自身。“我有2个
JFrame
对象”,这就是它开始出错的地方。请注意,它们可以延迟到关闭。“我有2个JFrame
对象”,这就是它开始出错的地方。看,他们可以推迟到关门。我明白了。这很有道理,我明白了。这在模态对话框中是有意义的。我已经实现了侦听器。然而,我的问题有点不同。我想从动作侦听器调用父对象。感谢neways,您可以从actionPerformed()方法内部调用父类(JFrame类)的任何函数。@Apurv当然可以,但您缺少更大的说明。OP正在从该按钮内启动一个新的GUI-它有自己的控件&它们没有直接引用回主GUI,也没有对这些控件的引用。仅当addEventListener()位于父类内时。这就是我不知道如何访问父类的问题。Child不知道父对象。我已经实现了侦听器。然而,我的问题有点不同。我想从动作侦听器调用父对象。感谢neways,您可以从actionPerformed()方法内部调用父类(JFrame类)的任何函数。@Apurv当然可以,但您缺少更大的说明。OP正在从该按钮内启动一个新的GUI-它有自己的控件&它们没有直接引用回主GUI,也没有对这些控件的引用。仅当addEventListener()位于父类内时。这就是我不知道如何访问父类的问题。孩子没有意识到父母。