gpt4 book ai didi

Java - 调用不在范围内的对象的方法( parent 的 child )

转载 作者:行者123 更新时间:2023-11-29 06:14:03 26 4
gpt4 key购买 nike

这可能已经被问过很多次了,或者我不知道要搜索什么才能得到答案。我得到的是一个在多个 JPanel 中加载的 JFrame。我遇到的困难是从一个 JPanel 更新另一个 JPanel 的内容。所以说我有以下内容:

JFrame1.JPanel1.JButtonA
JFrame1.JPanel2.JButtonB

当按下 JButtonA 时,我希望 JButtonB 更改其文本。当然,这不是我想要做的,而是我想要实现的一个简单示例。我哪里错了?如何在不使所有内容都成为单例的情况下获取对对象的引用?

最佳答案

最简单的方法当然是在构造JPanel1时记住对JFrame1的引用:

JPanel1 p1 = new JPanel1(this);

记住并在 JPanel1 中使用它:

public JPanel1(JFrame1 f1) {
this.f1 = f1;
}
...
public void actionPerformend(...) {
f1.getPanel2().getButtonB().setText("A is pressed");
}

但是那很糟糕

相反,想想点击 A 的真正含义(例如 暂停游戏)。然后创建一个 PauzeGameEventListener 接口(interface),由 JPanel2(例如棋盘)实现,并使 JPanel1(例如游戏控制面板)触发 PauzeGameEvent 给所有听众。这样,当您的 JPanel3(例如 得分面板)或非图形用户界面(例如 AI 播放器)也需要意识到这一点时,您就不会乱扔 JPanel1 代码。

关于Java - 调用不在范围内的对象的方法( parent 的 child ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5753209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com