【问题标题】:java need a child object to change data in the parent [closed]java需要一个子对象来更改父对象中的数据[关闭]
【发布时间】:2017-05-24 09:06:12
【问题描述】:

我确定我遗漏了一些明显的东西,但我对 java 还很陌生。

无论如何,我需要子对象更新父对象中的变量以显示进度信息。

package XXX
{

    class aaa
    {
        //has Main()    
        //instantiates an instance of bbb and runs it.    
        bbb myForm = new bbb();
        myForm.setVisible(true);
    }


    class bbb
    {
        public JTextField jProgressField = new JTextField();
        //builds a form with buttons that also shows jProgressField.
        //when you push the "go" button, it instantiates CCC object and tells it to do stuff
        ccc doStuff = new ccc();
        doStuff.goAndConquer();
    }

    class ccc
    {
        protected goAndConquery()
        { 
        //blah blah blah
        //processes a file
        //needs to update ccc with progress information that will still be there to be read when ccc.goAndConquer ends and goes out of scope
        }
    }
}

所有一个包。

三个文件中的三个类。

代码正常工作并且事情发生了......但是......我需要在处理发生时使用来自 ccc 的数据更新表单(bbb 的实例)(进度条和发生的事情的运行日志)。 如何将数据流发送回“父级”或调用实例/对象?

本质上,在 ccc 中,我想这样做(重复,因为它贯穿正在处理的文件)

myParentWhoCreatedMeAndCalledMe.jProgressField = myParentWhoCreatedMeAndCalledMe.jProgressField + "next line of status information"; 

【问题讨论】:

  • 请提供完整代码。它不可读。
  • 我同意@Piotrowy,有点——我想看看你的minimal reproducible example,而不是你的“完整代码”。如果您遇到严重的问题并需要认真的帮助,请发布严肃的真实代码,而不是那种代码。射击,您的代码甚至没有显示继承,而且您的问题看起来像是您甚至可能在滥用继承。
  • 我可能误用了继承。我不知道。
  • Amit 已经成功回答了这个问题,所以我觉得没有必要更新这个问题。显然,阿米特已经足够清楚地认识到问题并以建设性和有用的方式做出回应。关闭以完成代码测试。

标签: java swing


【解决方案1】:

如何将数据流发送回“父级”或调用实例/对象?
“父母”在这里不是正确的词,因为 ccc 不扩展 bbb。

假设你的班级 bbb 有一个你想要更新的字段数据:-

class bbb{
 private String data;

 public String getData(){
  return data;
 }

public void setData(String data){
this.data=data;
}
}

在你的 bbb 类中,有一个 ccc 实例对方法的调用,需要更新 bbb 的数据字段:-

ccc doStuff = new ccc(this);
doStuff.goAndConquer()

你的班级 ccc 如下所示:-

class ccc{

private bbb b;

public ccc(bbb b){
  this.b=b;
}

//Now while processing your file just do below
// b.setData(dataToBeSet);

}

只需将 bbb 的实例传递给 ccc 并更新它。

【讨论】:

  • 因此,Amit 没有抱怨问题的格式,而是阅读了它,认识到了问题,并提供了答案。我能够使用 Amit 的答案在大约 10 分钟的代码更改中完成我需要做的事情。为阿米特喝彩!
猜你喜欢
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
  • 2014-05-21
  • 2014-05-08
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多